win32 select()报告插入()套接字上的例外;wsagetlasterror()= 0
WIN32 select() reports exception on listen() socket; WSAGetLastError() = 0?
标题可能说明了一切?
Windows 10,Visual Studio社区2017。
a c 服务器在端口上听,将结果的FD放入FD_SET中以进行输入,一个用于例外。select()
称为。
它返回,并且连接为 accept()
ed。它的FD也添加到这两个FD_SET中。
连接良好,结束。然后将其fd从两个fd_set中删除。
在下一次呼叫select()
时,我被告知在听力插座上有一个例外,但是WSAGetLastError()
为零。
根据我的笔记,聆听FD具有O_NONBLOCK
集,因为:
选择或民意调查后可能不会总是等待连接 返回可读性事件,因为随后可能会有 网络错误。为了防止
accept()
阻塞,我们必须设置O_NONBLOCK
。
它也有SO_REUSEADDR
集。
listen()
的队列深度为5。
您需要使用选项SO_ERROR
在听力套接字上调用getsockopt()
。
WSAGetLastError()
的零是指select()
未返回-1。
相关文章:
- win32 select()报告插入()套接字上的例外;wsagetlasterror()= 0
- 为什么std :: string使wsagetlasterror返回零
- 从 IOCP 线程调用 WSAGetLastError() 将返回不正确的结果
- 为什么创建 std::runtime_error 会重置 WSAGetLastError
- WSAGetLastError 10038 in a C++ client
- C++ Bluetooth WSAGetLastError 10108
- 来自WSAGetLastError 10014的C++UDP记录
- C++UDP recvfrom行为异常,WSAGetLastError=10014
- Connect()函数失败wsagetlasterror() 10038