1*5e54f6d4SAugustin Cavalier /*
2*5e54f6d4SAugustin Cavalier * Copyright 2008-2010, Haiku, Inc. All Rights Reserved.
3*5e54f6d4SAugustin Cavalier * Distributed under the terms of the MIT License.
4*5e54f6d4SAugustin Cavalier *
5*5e54f6d4SAugustin Cavalier * Authors:
6*5e54f6d4SAugustin Cavalier * Yin Qiu
7*5e54f6d4SAugustin Cavalier */
8*5e54f6d4SAugustin Cavalier
9*5e54f6d4SAugustin Cavalier
10*5e54f6d4SAugustin Cavalier #include <errno.h>
11*5e54f6d4SAugustin Cavalier #include <netinet/in.h>
12*5e54f6d4SAugustin Cavalier #include <stdio.h>
13*5e54f6d4SAugustin Cavalier #include <stdlib.h>
14*5e54f6d4SAugustin Cavalier #include <string.h>
15*5e54f6d4SAugustin Cavalier #include <sys/socket.h>
16*5e54f6d4SAugustin Cavalier #include <unistd.h>
17*5e54f6d4SAugustin Cavalier
18*5e54f6d4SAugustin Cavalier
19*5e54f6d4SAugustin Cavalier int
main(int argc,char ** argv)20*5e54f6d4SAugustin Cavalier main(int argc, char **argv)
21*5e54f6d4SAugustin Cavalier {
22*5e54f6d4SAugustin Cavalier int sockfd, status;
23*5e54f6d4SAugustin Cavalier struct sockaddr_in serverAddr;
24*5e54f6d4SAugustin Cavalier
25*5e54f6d4SAugustin Cavalier if (argc != 3)
26*5e54f6d4SAugustin Cavalier {
27*5e54f6d4SAugustin Cavalier fprintf(stderr, "Usage: %s <ip-address> <port>\n", argv[0]);
28*5e54f6d4SAugustin Cavalier exit(1);
29*5e54f6d4SAugustin Cavalier }
30*5e54f6d4SAugustin Cavalier
31*5e54f6d4SAugustin Cavalier memset(&serverAddr, 0, sizeof(struct sockaddr_in));
32*5e54f6d4SAugustin Cavalier serverAddr.sin_family = AF_INET;
33*5e54f6d4SAugustin Cavalier serverAddr.sin_port = htons(atoi(argv[2]));
34*5e54f6d4SAugustin Cavalier
35*5e54f6d4SAugustin Cavalier sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
36*5e54f6d4SAugustin Cavalier if ((status = connect(sockfd, (struct sockaddr*)&serverAddr,
37*5e54f6d4SAugustin Cavalier sizeof(struct sockaddr_in))) < 0) {
38*5e54f6d4SAugustin Cavalier int e = errno;
39*5e54f6d4SAugustin Cavalier fprintf(stderr, "Connection failed. Status: %d\n", status);
40*5e54f6d4SAugustin Cavalier fprintf(stderr, "Error: %s\n", strerror(e));
41*5e54f6d4SAugustin Cavalier exit(1);
42*5e54f6d4SAugustin Cavalier } else {
43*5e54f6d4SAugustin Cavalier printf("Connected to remote server.\n");
44*5e54f6d4SAugustin Cavalier close(sockfd);
45*5e54f6d4SAugustin Cavalier printf("Socket closed.\n");
46*5e54f6d4SAugustin Cavalier }
47*5e54f6d4SAugustin Cavalier return 0;
48*5e54f6d4SAugustin Cavalier }
49