daytimetcpcli3.c 984 B

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