C++ Winsock-非阻塞套接字:发送返回10035

C++ Winsock-非阻塞套接字:发送返回10035,c++,winsock,send,C++,Winsock,Send,据我所知,这意味着发送缓冲区暂时已满,您应该稍后再尝试发送。这就是我的问题所在,这样的等待函数会是什么样子?我尝试了WSAAsyncSelect和select,但都不知道它们是如何工作的。select()是完全正确的工具,只要在线查找任何类型的示例即可。请注意,当示例假设使用POSIX(Unix、Linux等)系统时,WinSock不会设置errno,而是使用WSASetLastError()。如果有疑问,MSDN是WinSock的参考,而不是POSIX规范 您还可以使用WSAEventSele

据我所知,这意味着发送缓冲区暂时已满,您应该稍后再尝试发送。这就是我的问题所在,这样的等待函数会是什么样子?我尝试了WSAAsyncSelect和select,但都不知道它们是如何工作的。

select()是完全正确的工具,只要在线查找任何类型的示例即可。请注意,当示例假设使用POSIX(Unix、Linux等)系统时,WinSock不会设置
errno
,而是使用
WSASetLastError()
。如果有疑问,MSDN是WinSock的参考,而不是POSIX规范


您还可以使用
WSAEventSelect()
,它有一些优点,但使用起来更复杂。现在请记住这一点,并使用
select()

必须仍然得到不正确的信息,至少发送停止返回10035,但无论我告诉select超时多长时间,它仍然返回0。但是,如果我让服务器睡眠1秒钟,它就可以正常工作。哦,该死的,无论如何,我不会让我编辑最后一篇文章:一旦我也设置了电视,它就可以工作了。即使tv_usec设置为0,背后的原因是什么?如果不查看代码,就很难判断错误在哪里。可能是服务器或其他代码关闭了连接吗?嗯,不应该,因为我已经设置了连接,所以在断开用户连接时它会打印一条消息,除非winsock会自动关闭连接而不向我发出警告。10035是EWOULDBLOCK。