windows socket套接字错误含义

        windows下主要是根据 WSAGetLastError()函数 返回的可能的错误代码来确定当前套接字发生的错误。主要有如下几种

        WSAEINTR (10004)
        说明: WSACancelBlockingCall () 对阻塞的操作被中断。

        WSAEACCES (10013)
        说明: 尝试访问套接字被禁止其访问权限的方式。例如,用于发送到广播的地址,但广播的权限未设置通过使用 setsockopt(SO_BROADCAST) 时,将发生此错误。另一个可能导致 WSAEACCES 错误的原因是,当绑定 函数调用,另一个程序、 服务或内核模式驱动程序绑定到同一地址具有独占访问权。这种独占的访问是一项新功能的 Windows NT 4.0 SP4 和更高版本,并使用 SO_EXCLUSIVEADDRUSE 选项的实现。 

WSAEFAULT (10014)

  • 说明: 在尝试使用指针参数的调用时,系统检测到无效的指针地址。如果程序传递了无效的指针值,或者如果缓冲区的长度太小,则会发生此错误。例如,如果是一个 SOCKADDR 的结构参数的长度小于 sizeof(SOCKADDR) 值,将发生此问题。

WSAEINVAL (10022)

  • 说明setsockopt函数提供了无效的参数 (例如,指定了无效的级别参数)。有时,它也指从插座的当前状态,例如,电话上没有侦听套接字接受

WSAEMFILE (10024)

  • 说明: 有太多打开的套接字。每个实现可能有套接字句柄可用的最大数目。这些句柄可能提供全局,每进程,或每个线程。

WSAEWOULDBLOCK (10035)

  • 说明:无法立即完成,例如,非阻塞套接字上的操作从接收,当没有排队的数据要从套接字读取。它是一个非致命的错误,并稍后重试该操作。WSAEWOULDBLOCK 通常报告的调用结果在因为一些时间建立的连接必须经过 SOCK_STREAM 非阻塞套接字连接。

WSAEINPROGRESS (10036)

  • 说明: 一个阻塞操作当前正在运行。Windows 套接字只允许一个阻塞操作为每个任务或未完成的每个线程。如果 (无论是引用,或任何其他套接字) 进行任何其他函数调用,则操作将失败并出现 WSAEINPROGRESS 错误。

WSAEALREADY (10037)

  • 说明: 当一个操作正在进行时,非阻塞套接字上尝试执行操作。例如,调用连接已是第二次尝试非阻塞套接字已连接或已取消或已完成的异步请求尝试。

WSAENOTSOCK (10038)

  • 说明: 操作已尝试某件事不是一个套接字。套接字句柄参数未引用有效的套接字,或者为选择 (Wsapiref_1ab6.asp) 中,fd_set 的成员已无效。

WSAEDESTADDRREQ (10039)

  • 说明: 套接字上的操作中省略了必需的地址。

WSAEMSGSIZE (10040)

  • 说明: 在数据报套接字发送的消息大于内部消息缓冲区或其他一些网络限制,或用于接收数据报的缓冲区小于数据报本身。

WSAEPROTOTYPE (10041)

  • 说明: 在套接字函数调用中指定的协议类型不支持。

WSAENOPROTOOPT (10042)

  • 说明: getsockopt () 调用或 setsockopt () 调用中指定了未知的、 无效的或不受支持的选项或级别。

WSAEPROTONOSUPPORT (10043)

  • 说明: 请求的协议或者尚未配置系统中,或者它的实现不存在

WSAESOCKTNOSUPPORT (10044)

  • 说明: 这个地址家族中不存在指定的套接字类型的支持。

WSAEOPNOTSUPP (10045)

  • 说明: 所引用的对象的类型不支持所尝试的操作。

WSAEPFNOSUPPORT (10046)

  • 说明: 它的实现不存在或尚未配置此协议族在系统中。

WSAEAFNOSUPPORT (10047)

  • 说明: 使用地址与请求的协议不兼容。

WSAEADDRINUSE (10048)

  • 说明: 通常情况下,允许只有一个使用的每个套接字地址 (协议/IP 地址/端口)。

WSAEADDRNOTAVAIL (10049)

  • 说明: 所请求的地址是无效的上下文中。

WSAENETDOWN (10050)

  • 说明: 套接字操作遇到死网络。

WSAENETUNREACH (10051)

  • 说明: 到无法访问的网络尝试执行套接字操作。

WSAENETRESET (10052)

  • 说明: 连接已断开,因为在操作过程中检测到故障的保持活动。

WSAECONNABORTED (10053)

  • 说明: 已建立的连接被停止计算机主机中的软件可能因为数据传输超时或协议错。

WSAECONNRESET (10054)

  • 说明: 远程主机被强行关闭现有连接。

WSAENOBUFS (10055)

  • 说明: 由于系统缓冲区空间不足,或者因为队列已满,不能执行套接字上的操作。

WSAEISCONN (10056)

  • 说明: 在已连接的套接字上发出连接请求。

WSAENOTCONN (10057)

  • 说明: 由于套接字没有连接并且 (在使用 的数据文报套接字上发送时,未提供地址) 不允许发送或接收数据的请求。任何其他类型的操作也可能会返回此错误,例如,如果连接已被重置设置 SO_KEEPALIVE setsockopt 。

WSAESHUTDOWN (10058)

  • 说明: 发送或接收数据的请求不允许的因为套接字有已关闭在该方向与以前的关闭调用。当调用一次关闭时,将请求关闭套接字的部分。这是一个信号,它已停止使用的发送或接收进程 (或两者)。

WSAETIMEDOUT (10060)

  • 说明: 因为被连接的方没有正确响应的时间,一段时间后,或者已建立的连接失败,因为被连接的主机未能响应而导致连接尝试失败。

WSAECONNREFUSED (10061)

  • 描述: 可以创建任何连接,因为目标计算机有效地拒绝它。此错误通常是因试图连接到的服务,在外部主机上,就是一个没有运行的服务器程序处于非活动状态。

WSAEHOSTDOWN (10064)

  • 说明: 套接字操作失败,因为目标主机已关闭。套接字操作遇到一个死的主机。在本地主机上的网络活动尚未启动。这些条件都更有可能由错误 WSAETIMEDOUT。

WSAEHOSTUNREACH (10065)

  • 说明: 套接字操作已尝试到无法访问的主机。请参阅 WSAENETUNREACH。

WSAEPROCLIM (10067)

  • 描述: Windows 套接字实现可能会限制可以同时使用的程序的数量。如果达到限制,WSAStartup () 可能会失败并生成此错误。

WSASYSNOTREADY (10091)

  • 说明: 如果 Windows 套接字实现当前不能正常工作,因为它用来提供网络服务的基础系统当前不可用,WSAStartup () 将返回此错误。确认下列信息:
    • 确认适当的 Windows 套接字 DLL 文件的当前路径。
    • 确认他们没有试图同时使用多个 Windows 套接字实现。
    • 如果有多个 Winsock DLL 在系统上,确认 Winsock DLL 路径中第一个适用于当前加载的网络子系统。
    • 请确认所有必需的组件当前已安装并正确配置根据 Windows 套接字实现文档。

WSAVERNOTSUPPORTED (10092)

  • 说明: 当前的 Windows 套接字实现不支持请求的程序的 Windows 套接字规范版本。请确保正在访问任何旧的 Windows 套接字 DLL 文件。

WSANOTINITIALISED (10093)

  • 说明: WSAStartup 失败,不具有调用这两个程序。该程序可能正在访问的插座,并不属于当前活动任务 (即,它试图共享任务之间的套接字),或已被 WSACleanup 调用次数过多。

WSAEDISCON (10101)

  • 说明: WSARecv  和 WSARecvFrom  以指示远程方已开始正常关机序列,将返回此错误。

WSATYPE_NOT_FOUND (10109)

  • 说明: 未找到指定的类。

WSAHOST_NOT_FOUND (11001)

  • 说明: 该名称不是正式的主机名或别名,或找不到它的数据库中,正在被查询。此错误可能也会返回协议和服务的查询,以及它在相关数据库中找不到指定的名称的方法。

WSATRY_AGAIN (11002)

  • 说明: 此错误通常是暂时的错误在主机名称解析,以及它意味着本地服务器没有收到来自授权服务器的响应。重试上一段时间后可能会成功。

WSANO_RECOVERY (11003)

  • 说明: 此错误表示数据库查找过程中发生了某种形式的不可恢复的错误。如果找不到数据库文件 (例如,BSD 兼容主机、 服务或协议的文件),或者一个 DNS 请求返回的一个严重错误的服务器,则可能会发生此错误。

WSANO_DATA (11004)

  • 说明: 请求的名称有效并且已在数据库中找到,但它并没有正确的关联的数据,它要解决的。这样的典型示例尝试就是一个主机名称到地址翻译 (使用 gethostbyname 或 WSAAsyncGetHostByName) 使用的 DNS 服务器。MX 记录,则返回但没有 A 记录。这指示主机本身存在,但不是直接到达。

WSA_INVALID_HANDLE (取决于操作系统)

  • 说明: 一个程序试图使用一个事件对象,但指定的句柄无效。

WSA_INVALID_PARAMETER (取决于操作系统)

  • 说明: 使用一个 Windows 套接字函数,直接将映射到一个 Win32 函数程序。Win32 函数表示一个或多个参数的问题。

WSA_IO_INCOMPLETE (取决于操作系统)

  • 说明: 该程序已尝试确定尚未完成的重叠操作的状态。操作完成之前,程序在轮询模式中使用 WSAGetOverlappedResult (与 fWait 标志设置为 FALSE) 以确定重叠的操作完成时收到此错误代码。

WSA_IO_PENDING (取决于操作系统)

  • 说明: 该程序已开始无法立即完成的重叠的操作。操作完成后,将稍后发送完成指示。

WSA_NOT_ENOUGH_MEMORY (取决于操作系统)

  • 说明: 使用一个 Windows 套接字函数,直接将映射到一个 Win32 函数程序。Win32 函数表示所需的内存资源不足。

WSA_OPERATION_ABORTED (取决于操作系统)

  • 说明: 重叠的操作被取消,因为套接字已关闭或 WSAIoctl ) 中的 SIO_FLUSH 命令运行。

WSAINVALIDPROCTABLE (取决于操作系统)

  • 说明: 服务提供程序返回一个无效的过程表到 Ws2_32.dll。(这是通常引起的由一个或多个 null 函数指针。)

WSAINVALIDPROVIDER (取决于操作系统)

  • 说明: 一个服务提供程序返回非 2.0 版本数字。

WSAPROVIDERFAILEDINIT (取决于操作系统)

  • 说明: 哪种服务提供程序的 DLL 不能加载 (则失败) 或提供程序的 WSPStartup/NSPStartup 函数失败。

WSASYSCALLFAILURE (取决于操作系统)

  • 说明: 应永远不会失败的系统调用失败时,将返回此错误。例如,如果对 WaitForMultipleObjects 的调用失败,或注册表函数之一失败尝试更改协议或名称空间目录,将发生此错误。

你可能感兴趣的:(网络协议,套接字错误)