使用SO_REVTIMEO套接字选项为recvfrom设置超时
Posted soldierback
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用SO_REVTIMEO套接字选项为recvfrom设置超时相关的知识,希望对你有一定的参考价值。
void dg_cli(FILE *fp, int sockfd, const SA *pservaddr, socklen_t servlen) { int n; char sendline[MAXLINE], recvline[MAXLINE + 1]; struct timeval tv; tv.tv_sec = 5; tv.tv_usec = 0; setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)); while (fgets(sendline, MAXLINE, fp) != NULL) { sendto(sockfd, sendline, strlen(sendline), 0, pservaddr, servlen); n = recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL); if (n < 0) { if (errno == EWOULDBLOCK) { fprintf(stderr, "socket timeout\n"); continue; } else err_sys("recvfrom error"); } recvline[n] = 0; /* null terminate */ fputs(recvline, stdout); } }
以上是关于使用SO_REVTIMEO套接字选项为recvfrom设置超时的主要内容,如果未能解决你的问题,请参考以下文章
使用SO_RCVTIMEO套接字选项为recvfrom设置超时
通过 SO_RCVTIMEO 套接字选项在 Ruby 中设置套接字超时