WSASend()和WSARecv()的所有错误代码是否表示套接字已断开连接?

时间:2015-03-08 11:51:03

标签: c++ sockets iocp

我需要知道使用IOCP时WSASend()WSARecv()的错误代码(WSA_IO_PENDING除外)是否意味着套接字已断开连接。大多数错误代码都很明显,但我不确定以下内容:

WSASend()的错误代码:

  • WSAEINPROGRESS
  • WSAENOBUFS
  • WSA_OPERATION_ABORTED

WSARecv()的错误代码:

  • WSAEFAULT
  • WSAEINPROGRESS

1 个答案:

答案 0 :(得分:6)

答案

不,并非所有错误代码都是因为套接字断开连接。


精化

我实际上不确定如何回答这个问题而不会喊出“不,请阅读文档!”


例如,WSAEINPROGRESS表示正在进行另一个阻塞操作 - 因此当前的阻塞操作已中止。

  

WSAEINPROGRESS - 10036

     
    

正在进行中的操作。

         
      

当前正在执行阻止操作。 Windows套接字只允许单个阻塞操作 - 每个任务或线程 - 未完成,如果进行任何其他函数调用(无论它是否引用该套接字或任何其他套接字),该函数将失败并显示WSAEINPROGRESS。