在阅读FD_SET
内,我有几个套接字:
我将超时设置为30秒并调用select()
。我很快发现每种行为都不同:
有没有办法可以让它在第二种情况下立即返回?
答案 0 :(得分:2)
我的猜测是你没有在正确的fd_set中包含所有套接字,或者你没有将最高编号的文件描述符加上1作为select调用的第一个参数(下面的nfds)。
select(nfds, &readfds, &writefds, &execptfds, &timeout);
答案 1 :(得分:1)
select(2)
最常见的错误之一是在再次调用fd_set
之前没有重新初始化select()
。
答案 2 :(得分:0)
我经常使用这样的select()而没有任何问题。
对于等待数据的已接受套接字,可能会出错。你能发贴代码片段吗?尤其重要的是如何设置第一个select()参数。