xref: /haiku/src/tests/system/network/icmp/tcp_unreachable.cpp (revision 5e54f6d4f9dd607ae2afcea4fe72f2f1763e4b5e)
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