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

Tom*_*Tom 2 c++ sockets iocp

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

错误代码WSASend():

  • WSAEINPROGRESS
  • WSAENOBUFS
  • WSA_OPERATION_ABORTED

错误代码WSARecv():

  • WSAEFAULT
  • WSAEINPROGRESS

Fil*_*efp 6

答案

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


我实际上不确定如何回答这个问题而不会大吼大叫"不,请阅读文档!" .


例如,WSAEINPROGRESS意味着正在进行另一个阻塞操作 - 因此当前的阻塞操作已中止.

WSAEINPROGRESS - 10036

操作正在进行中.

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