我正在调用ConnectEx()
方法。它返回FALSE值,因此我通过WSAGetLastError
调用检查错误代码。有时会发生返回值为零的情况。这是什么意思?
答案 0 :(得分:4)
发生错误时应立即调用WSAGetLastError。 某些功能可能会将最后一个扩展错误代码重置为0
MSDN的更多信息。
答案 1 :(得分:1)
没有值为0的Winsock错误代码,因此我最好的猜测是你没有调用WSAStartup。
答案 2 :(得分:0)
winsock recv函数可以返回错误(SOCKET_ERROR),然后即使下一次调用是WSAGetLastError,它仍然可以返回0作为错误代码。
从调试模式切换到发布模式时,我首先发现了这个'bug'。我的代码在调试时工作正常,但在发布模式下会断开客户端。
原因是接收缓冲区不够大。但这在任何地方都没有记录。在我的情况下,释放模式使事情足够快以溢出缓冲区。
简单地增加缓冲区的大小将解决问题(recv。中的第3个参数
希望这有帮助。祝你好运