代码之家  ›  专栏  ›  技术社区  ›  Tom

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

  •  2
  • Tom  · 技术社区  · 9 年前

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

    的错误代码 WSA结束() :

    • WSAEINPROGRESS
    • WSAENOBUFS
    • WSA_OPERATION_ABORTED

    的错误代码 WSARecv() :

    • WSAEFAULT
    • wsaein进程
    1 回复  |  直到 9 年前
        1
  •  6
  •   Community Gilles 'SO- stop being evil'    4 年前

    答案

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


    详尽阐述

    事实上,我不知道如何回答这个问题而不大声喊叫 “不,请阅读文档!” .


    作为示例, WSAEINPROGRESS 意味着有另一个阻塞操作正在进行中,因此当前的阻塞操作已被中止。

    wsaein进程 - 10036

    操作正在进行。

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