tcpcli07.c 853 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include "unp.h"
  2. int
  3. main(int argc, char **argv)
  4. {
  5. int sockfd;
  6. void sig_alrm(int);
  7. struct itimerval val;
  8. struct sockaddr_in servaddr;
  9. if (argc != 2)
  10. err_quit("usage: tcpcli <IPaddress>");
  11. sockfd = Socket(AF_INET, SOCK_STREAM, 0);
  12. bzero(&servaddr, sizeof(servaddr));
  13. servaddr.sin_family = AF_INET;
  14. servaddr.sin_port = htons(SERV_PORT);
  15. Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
  16. /* Set interval timer to go off before 3WHS completes */
  17. Signal(SIGALRM, sig_alrm);
  18. val.it_interval.tv_sec = 0;
  19. val.it_interval.tv_usec = 0;
  20. val.it_value.tv_sec = 0;
  21. val.it_value.tv_usec = 50000; /* 50 ms */
  22. if (setitimer(ITIMER_REAL, &val, NULL) == -1)
  23. err_sys("setitimer error");
  24. Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));
  25. str_cli(stdin, sockfd); /* do it all */
  26. exit(0);
  27. }
  28. void
  29. sig_alrm(int signo)
  30. {
  31. exit(0);
  32. }