【发布时间】:2015-05-31 05:50:51
【问题描述】:
我目前在一个项目中使用套接字,我想在 recv 函数中设置 5 秒的超时。我在this question 中发现带有 SO_RCVTIMEO 选项的setsockopt 应该这样做,但问题是它也会影响accept() 函数,我只想要recv() 函数的超时.这是我设置超时的方法:
/*Setting timeout for bad headers*/
struct timeval tv;
tv.tv_sec = 5; /* 5 seconds timeout for receiving a request */
tv.tv_usec= 0;
setsockopt(fd, SOL_SOCKET,
SO_RCVTIMEO,(struct timeval *)&tv,
sizeof(struct timeval));
这个想法是,如果客户端发送损坏的标头(例如消息长度不正确),线程最多等待 5 秒以丢弃请求。
那么,是否可以只为recv() 函数设置此超时而不影响accept() 函数?如果是这样,我该怎么做?
【问题讨论】:
-
问题是什么?
-
我投票决定将此问题作为题外话结束,因为没有问题。
-
@iharob 现在问题很明确了。