dgclitimeo3.lc 1.7 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #include "unp.h"## 1 ##src/advio/dgclitimeo3.c##
  2. static void sig_alrm(int);## 2 ##src/advio/dgclitimeo3.c##
  3. void## 3 ##src/advio/dgclitimeo3.c##
  4. dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen)## 4 ##src/advio/dgclitimeo3.c##
  5. {## 5 ##src/advio/dgclitimeo3.c##
  6. int n;## 6 ##src/advio/dgclitimeo3.c##
  7. char sendline[MAXLINE], recvline[MAXLINE + 1];## 7 ##src/advio/dgclitimeo3.c##
  8. Signal(SIGALRM, sig_alrm);## 8 ##src/advio/dgclitimeo3.c##
  9. while (Fgets(sendline, MAXLINE, fp) != NULL) {## 9 ##src/advio/dgclitimeo3.c##
  10. Sendto(sockfd, sendline, strlen(sendline), 0, pservaddr, servlen);## 10 ##src/advio/dgclitimeo3.c##
  11. alarm(5);## 11 ##src/advio/dgclitimeo3.c##
  12. if ((n = recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL)) < 0) {## 12 ##src/advio/dgclitimeo3.c##
  13. if (errno == EINTR)## 13 ##src/advio/dgclitimeo3.c##
  14. fprintf(stderr, "socket timeout\n");## 14 ##src/advio/dgclitimeo3.c##
  15. else## 15 ##src/advio/dgclitimeo3.c##
  16. err_sys("recvfrom error");## 16 ##src/advio/dgclitimeo3.c##
  17. } else {## 17 ##src/advio/dgclitimeo3.c##
  18. alarm(0);## 18 ##src/advio/dgclitimeo3.c##
  19. recvline[n] = 0; /* null terminate */## 19 ##src/advio/dgclitimeo3.c##
  20. Fputs(recvline, stdout);## 20 ##src/advio/dgclitimeo3.c##
  21. }## 21 ##src/advio/dgclitimeo3.c##
  22. }## 22 ##src/advio/dgclitimeo3.c##
  23. }## 23 ##src/advio/dgclitimeo3.c##
  24. static void## 24 ##src/advio/dgclitimeo3.c##
  25. sig_alrm(int signo)## 25 ##src/advio/dgclitimeo3.c##
  26. {## 26 ##src/advio/dgclitimeo3.c##
  27. return; /* just interrupt the recvfrom() */## 27 ##src/advio/dgclitimeo3.c##
  28. }## 28 ##src/advio/dgclitimeo3.c##