WSAGetLastError返回零

时间:2011-02-11 15:44:35

标签: winapi

我正在调用ConnectEx()方法。它返回FALSE值,因此我通过WSAGetLastError调用检查错误代码。有时会发生返回值为零的情况。这是什么意思?

3 个答案:

答案 0 :(得分:4)

发生错误时应立即调用WSAGetLastError。 某些功能可能会将最后一个扩展错误代码重置为0

MSDN的更多信息。

答案 1 :(得分:1)

没有值为0的Winsock错误代码,因此我最好的猜测是你没有调用WSAStartup。

答案 2 :(得分:0)

winsock recv函数可以返回错误(SOCKET_ERROR),然后即使下一次调用是WSAGetLastError,它仍然可以返回0作为错误代码。

从调试模式切换到发布模式时,我首先发现了这个'bug'。我的代码在调试时工作正常,但在发布模式下会断开客户端。

原因是接收缓冲区不够大。但这在任何地方都没有记录。在我的情况下,释放模式使事情足够快以溢出缓冲区。

简单地增加缓冲区的大小将解决问题(recv。中的第3个参数

希望这有帮助。祝你好运