在winsock2中使用选择

Posted

技术标签:

【中文标题】在winsock2中使用选择【英文标题】:using select in winsock2 【发布时间】:2011-06-15 12:23:46 【问题描述】:

我正在尝试让 select 正常工作,即使在套接字上没有可读取的内容时,它似乎也返回 1。所以我最终调用了 recv 并且它阻塞了,因为没有什么可读取的。

同样令人讨厌的是,对于 winsock,每次调用 select 时都必须调用 FD_SET,这与标准实现不一致。

我还需要注意其他奇怪的怪癖吗?

【问题讨论】:

向我们展示您的代码。没有它,我们就可以知道哪里出了问题。 【参考方案1】:

我已修复它,但我无法确定问题的确切原因是什么。我知道必须使用FD_SET 重新设置每个select() 调用的集合是非常相关的。根据文档,在调用select 之后,它会填写准备好读/写/等的集合。

今天故事的寓意是:阅读文档。

【讨论】:

以上是关于在winsock2中使用选择的主要内容,如果未能解决你的问题,请参考以下文章

如何在C中正确链接winsock2.h? [复制]

WINSOCK2 WSAAsyncSelect 已弃用问题

WinSock2.h 中的重新定义错误 [重复]

WebSocket客户端和WinSock2服务器,可以吗?

winsock.h与winsock2.h的区别(同时包含windows.h和winsock2.h报错重定义的问题)

winsock.h与winsock2.h的区别(同时包含windows.h和winsock2.h报错重定义的问题)