dgclitimeo2.lc 1.5 KB

12345678910111213141516171819202122232425262728293031
  1. #include "unp.h"## 1 ##src/advio/dgclitimeo2.c##
  2. void## 2 ##src/advio/dgclitimeo2.c##
  3. dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen)## 3 ##src/advio/dgclitimeo2.c##
  4. {## 4 ##src/advio/dgclitimeo2.c##
  5. int n;## 5 ##src/advio/dgclitimeo2.c##
  6. char sendline[MAXLINE], recvline[MAXLINE + 1];## 6 ##src/advio/dgclitimeo2.c##
  7. struct timeval tv;## 7 ##src/advio/dgclitimeo2.c##
  8. tv.tv_sec = 5;## 8 ##src/advio/dgclitimeo2.c##
  9. tv.tv_usec = 0;## 9 ##src/advio/dgclitimeo2.c##
  10. Setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));## 10 ##src/advio/dgclitimeo2.c##
  11. while (Fgets(sendline, MAXLINE, fp) != NULL) {## 11 ##src/advio/dgclitimeo2.c##
  12. Sendto(sockfd, sendline, strlen(sendline), 0, pservaddr, servlen);## 12 ##src/advio/dgclitimeo2.c##
  13. n = recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL);## 13 ##src/advio/dgclitimeo2.c##
  14. if (n < 0) {## 14 ##src/advio/dgclitimeo2.c##
  15. if (errno == EWOULDBLOCK) {## 15 ##src/advio/dgclitimeo2.c##
  16. fprintf(stderr, "socket timeout\n");## 16 ##src/advio/dgclitimeo2.c##
  17. continue;## 17 ##src/advio/dgclitimeo2.c##
  18. } else## 18 ##src/advio/dgclitimeo2.c##
  19. err_sys("recvfrom error");## 19 ##src/advio/dgclitimeo2.c##
  20. }## 20 ##src/advio/dgclitimeo2.c##
  21. recvline[n] = 0; /* null terminate */## 21 ##src/advio/dgclitimeo2.c##
  22. Fputs(recvline, stdout);## 22 ##src/advio/dgclitimeo2.c##
  23. }## 23 ##src/advio/dgclitimeo2.c##
  24. }## 24 ##src/advio/dgclitimeo2.c##