1 #include	"unp.h"
2 
3 int
main(int argc,char ** argv)4 main(int argc, char **argv)
5 {
6 	int					sockfd, n;
7 	socklen_t			len;
8 	char				recvline[MAXLINE + 1];
9 	struct sockaddr_in	servaddr, cliaddr;
10 
11 	if (argc != 2)
12 		err_quit("usage: a.out <IPaddress>");
13 
14 	if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
15 		err_sys("socket error");
16 
17 	bzero(&servaddr, sizeof(servaddr));
18 	servaddr.sin_family = AF_INET;
19 	servaddr.sin_port   = htons(13);	/* daytime server */
20 	if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
21 		err_quit("inet_pton error for %s", argv[1]);
22 
23 	if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0)
24 		err_sys("connect error");
25 
26 	len = sizeof(cliaddr);
27 	Getsockname(sockfd, (SA *) &cliaddr, &len);
28 	printf("local addr: %s\n",
29 		   Sock_ntop((SA *) &cliaddr, sizeof(cliaddr)));
30 
31 	while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
32 		recvline[n] = 0;	/* null terminate */
33 		if (fputs(recvline, stdout) == EOF)
34 			err_sys("fputs error");
35 	}
36 	if (n < 0)
37 		err_sys("read error");
38 
39 	exit(0);
40 }
41