Windows 套接字错误代码、 值和含义

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 819124
概要
本文介绍了由WSAGetLastError (Wsapiref_2tiq.asp) 函数返回的可能的错误代码。由错误宏按字母顺序列出了错误。在 Winsock2.h 中定义一些错误代码不会从任何函数返回。在这篇文章中不包括这些错误代码。
更多信息

WSAEINTR (10004)

  • 翻译: 中断函数调用。
  • 说明: WSACancelBlockingCall (Wsapiref_704y.asp) 对的调用阻止操作被中断。

WSAEACCES (10013)

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

WSAEFAULT (10014)

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

WSAEINVAL (10022)

  • 翻译: 参数无效。
  • 说明: 参数一个无效 (例如,指定等级无效参数) 提供给 setsockopt (Wsapiref_94aa.asp) 的函数。有时,它也指从插座的当前状态,例如,电话上没有侦听套接字接受 (Wsapiref_13aq.asp)。

WSAEMFILE (10024)

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

WSAEWOULDBLOCK (10035)

  • 翻译: 资源暂时不可用。
  • 说明: 将返回此错误不能立即完成,例如的非阻塞套接字上的操作 (Wsapiref_2i9e.asp),接收时没有排队的数据要从套接字读取。它是一个非致命的错误,并稍后重试该操作。WSAEWOULDBLOCK 通常调用的结果在因为一些时间建立的连接必须经过 SOCK_STREAM 非阻塞套接字连接 (Wsapiref_8m7m.asp) 报告。

WSAEINPROGRESS (10036)

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

WSAEALREADY (10037)

  • 翻译: 正在进行的操作。
  • 说明: 操作正在进行时,非阻塞套接字上尝试执行操作。例如,调用连接 (Wsapiref_8m7m.asp) 已是第二次尝试非阻塞套接字已连接或已取消或已完成的异步请求 (WSAAsyncGetXbyY) 尝试。

WSAENOTSOCK (10038)

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

WSAEDESTADDRREQ (10039)

  • 翻译: 需要目标地址。
  • 说明: 在套接字上的操作中忽略了一个所需的地址。例如,如果使用的远程地址 ADDR_ANY 的调用发送到 (Wsapiref_4sqa.asp),将返回此错误。

WSAEMSGSIZE (10040)

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

WSAEPROTOTYPE (10041)

  • 翻译: 协议套接字类型不正确。
  • 说明: (Wsapiref_2qr6.asp) 的套接字函数调用中指定的协议不支持请求的套接字类型的语义。例如,ARPA Internet UDP 协议不能指定套接字类型为 SOCK_STREAM。

WSAENOPROTOOPT (10042)

  • 翻译: 错误的协议选项。
  • 说明: Getsockopt (Wsapiref_8qcy.asp) 调用或 setsockopt (Wsapiref_94aa.asp) 调用中指定了未知、 无效或不受支持的选项或级别。

WSAEPROTONOSUPPORT (10043)

  • 翻译: 不支持的协议。
  • 说明: 它的实现不存在或者请求的协议或者尚未配置系统中。例如,(Wsapiref_2qr6.asp) 套接字调用请求 SOCK_DGRAM 套接字,但指定的流协议。

WSAESOCKTNOSUPPORT (10044)

  • 翻译: 套接字类型不受支持。
  • 说明: 这个地址家族中不存在指定的套接字类型支持。例如,可选类型可能选择在套接字 (Wsapiref_2qr6.asp) 调用,但实现不支持 SOCK_RAW SOCK_RAW 在所有套接字。

WSAEOPNOTSUPP (10045)

  • 翻译: 不支持的操作。
  • 说明: 已尝试操作不支持引用的对象的类型。一个套接字描述符到套接字不支持此操作尝试接受在数据报套接字的连接时,通常会发生此错误。

WSAEPFNOSUPPORT (10046)

  • 翻译: 协议系列不受支持。
  • 说明: 它的实现不存在或未在系统中配置此协议族。此消息已从 WSAEAFNOSUPPORT 略有不同的含义。但是,它是经常可以互换。返回以下消息之一的所有 Windows 套接字函数还可以都指定 WSAEAFNOSUPPORT。

WSAEAFNOSUPPORT (10047)

  • 翻译: 系列协议系列不支持地址。
  • 说明: 使用一个地址与请求的协议不兼容。所有套接字创建具有相关联的地址族 (即互联网协议的 AF_INET) 和通用协议类型 (即 SOCK_STREAM)。如果不正确的协议明确请求的套接字 (Wsapiref_2qr6.asp) 调用中或者地址错误的系列的用于套接字,例如,发送到 (Wsapiref_4sqa.asp) 中,将返回此错误。

WSAEADDRINUSE (10048)

  • 翻译: 地址已在使用。
  • 说明: 通常情况下,每个套接字地址 (协议/IP 地址/端口) 只有一个用法被允许。如果某个程序尝试绑定 (Wsapiref_6vzm.asp) 到一个 IP 地址或端口已经被使用,对于现有的套接字,不正确,关闭套接字的套接字,就会发生此错误,或者是仍处于关闭过程中的套接字。对于需要将多个套接字绑定到同一端口号的服务器程序,请考虑使用 setsockopt (Wsapiref_94aa.asp)(SO_REUSEADDR)。客户端程序通常不需要在所有调用 bind,连接 (Wsapiref_8m7m.asp) 将自动选择一个未使用的端口。调用绑定时使用通配符地址 (涉及 ADDR_ANY),提交特定地址之前,可能会延迟出现 WSAEADDRINUSE 错误。这可能会出现发生以后,包括连接、 侦听、 WSAConnect 或 WSAJoinLeaf 的另一个函数调用。

WSAEADDRNOTAVAIL (10049)

  • 翻译: 无法分配请求的地址。
  • 说明: 无效所请求的地址是在其上下文中。此错误通常是因尝试绑定 (Wsapiref_6vzm.asp) 是无效的本地计算机的地址。此错误也可能导致从连接 (Wsapiref_8m7m.asp),发送到 (Wsapiref_4sqa.asp),WSAConnect (Wsapiref_8kc2.asp),WSAJoinLeaf (Wsapiref_7dv6.asp) 或 WSASendTo (Wsapiref_752q.asp) 时的远程地址或端口无效 (例如,地址或端口 0) 的远程计算机。

WSAENETDOWN (10050)

  • 翻译: 在网络出现故障。
  • 说明: 一个套接字操作遇到死网络。此错误可能意味着网络系统 (即,对运行 Windows 套接字 DLL 协议栈)、 网络接口或本地网络本身的严重故障。

WSAENETUNREACH (10051)

  • 翻译: 网络不可用。
  • 说明: 对无法访问的网络尝试套接字操作。此错误通常意味着本地软件知道没有访问远程主机的路由。

WSAENETRESET (10052)

  • 翻译: 一次重置时网络中断连接。
  • 说明: 连接已中断,因为在操作过程中检测到故障的保持活动。它还可返回由 setsockopt (Wsapiref_94aa.asp) 如果试图将 SO_KEEPALIVE 设置在连接已失败。

WSAECONNABORTED (10053)

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

WSAECONNRESET (10054)

  • 翻译: 由对等方重置连接。
  • 说明: 现有的连接被远程主机强行关闭。如果突然停止远程主机上的对等程序,重新启动主机时,或远程主机使用硬关闭,通常会发生此错误。有关远程套接字上的 SO_LINGER 选项的详细信息,请参见 setsockopt (Wsapiref_94aa.asp)。如果由于一个或多个操作时检测到故障的保持活动连接已断开,也可能导致此错误。正在进行的操作失败,出现 WSAENETRESET。随后的操作失败,出现 WSAECONNRESET。

WSAENOBUFS (10055)

  • 翻译: 没有可用的缓冲区空间。
  • 说明: 由于系统缓冲区空间不足,或者因为队列已满,无法执行套接字上的操作。

WSAEISCONN (10056)

  • 翻译: 套接字已连接。
  • 说明: 在已连接的套接字上进行连接请求。如果发送到 (Wsapiref_4sqa.asp) 调用 SOCK_DGRAM 连接的套接字 (为 SOCK_STREAM 套接字,发送到 (Wsapiref_4sqa.asp) 中的 To 参数将被忽略) 尽管其他实现将此视为有效的事件,有些实现还会返回该错误。

WSAENOTCONN (10057)

  • 翻译: 套接字未连接。
  • 说明: 由于套接字没有连接并且 (当发送数据报套接字使用 sendto [Wsapiref_4sqa.asp],未提供地址) 不允许一个发送或接收数据的请求。任何其他类型的操作也可能会返回此错误,例如,如果已重置连接设置 SO_KEEPALIVE setsockopt (Wsapiref_94aa.asp)。

WSAESHUTDOWN (10058)

  • 翻译: 套接字关闭后不能发送。
  • 说明: 由于套接字有已关闭,与上一次关机 (Wsapiref_60z6.asp) 方向调用不允许一个发送或接收数据的请求。当调用一次关闭时,将请求关闭套接字的部分。这是一个信号,它已停止使用发送或接收进程 (或两者)。

WSAETIMEDOUT (10060)

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

WSAECONNREFUSED (10061)

  • 翻译: 连接被拒绝。
  • 说明: 可以创建无连接,因为目标计算机积极地拒绝它。此错误通常是因尝试连接到在外部主机上,就是一个没有运行的服务器程序处于非活动状态的服务。

WSAEHOSTDOWN (10064)

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

WSAEHOSTUNREACH (10065)

  • 翻译: 没有到主机的路由。
  • 说明: 无法连接的主机未试图套接字操作。请参阅 WSAENETUNREACH。

WSAEPROCLIM (10067)

  • 翻译: 进程太多。
  • 说明: 可以同时使用的程序的数量一个 Windows 套接字实现可能有限制。如果达到限制,WSAStartup (Wsapiref_1v8y.asp) 可能会失败并生成此错误。

WSASYSNOTREADY (10091)

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

WSAVERNOTSUPPORTED (10092)

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

WSANOTINITIALISED (10093)

  • 翻译: WSAStartup 成功还没有执行。
  • 说明: 请程序不具有名为 WSAStartup (Wsapiref_1v8y.asp) 或 WSAStartup (Wsapiref_1v8y.asp) 失败。该程序可能正在访问的插座,并不属于当前活动任务 (即,它试图共享任务之间的套接字),或 WSACleanup 已调用次数过多。

WSAEDISCON (10101)

  • 翻译: 正在进行的正常关机。
  • 说明: 此错误是由 WSARecv (Wsapiref_4z1u.asp) 和 WSARecvFrom (Wsapiref_4wky.asp),以指示远程方已开始正常关机顺序返回。

WSATYPE_NOT_FOUND (10109)

  • 翻译: 找不到的类类型。
  • 说明: 找不到指定的类。

WSAHOST_NOT_FOUND (11001)

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

WSATRY_AGAIN (11002)

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

WSANO_RECOVERY (11003)

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

WSANO_DATA (11004)

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

WSA_INVALID_HANDLE (取决于操作系统)

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

WSA_INVALID_PARAMETER (取决于操作系统)

  • 翻译: 一个或多个参数是无效的。
  • 说明: 一个程序用于 Windows 套接字函数直接映射到 Win32 函数。Win32 函数表示一个或多个参数的问题。

WSA_IO_INCOMPLETE (取决于操作系统)

  • 翻译: 不处于终止状态重叠的 I/O 事件对象。
  • 说明: 该程序已尝试确定尚未完成的重叠操作的状态。操作完成之前,程序在轮询模式中使用 WSAGetOverlappedResult fWait 标志设置为 FALSE 以确定重叠的操作完成时收到此错误代码。

WSA_IO_PENDING (取决于操作系统)

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

WSA_NOT_ENOUGH_MEMORY (取决于操作系统)

  • 翻译: 没有足够的内存可用。
  • 说明: 一个程序用于 Windows 套接字函数直接映射到 Win32 函数。Win32 函数表示所需的内存资源不足。

WSA_OPERATION_ABORTED (取决于操作系统)

  • 翻译: 终止重叠操作。
  • 说明: 由于套接字已关闭或已运行在 WSAIoctl (Wsapiref_6ik2.asp) 的 SIO_FLUSH 命令,重叠的操作被取消。

WSAINVALIDPROCTABLE (取决于操作系统)

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

WSAINVALIDPROVIDER (取决于操作系统)

  • 翻译: 无效的服务提供程序的版本号。
  • 说明: 一个服务提供程序返回非 2.0 版本数字。

WSAPROVIDERFAILEDINIT (取决于操作系统)

  • 翻译: 无法初始化服务提供商。
  • 说明: 哪种服务提供程序的 DLL 不能加载 (则失败) 或提供程序的 WSPStartup/NSPStartup 函数失败。

WSASYSCALLFAILURE (取决于操作系统)

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

警告:本文已自动翻译

属性

文章 ID:819124 - 上次审阅时间:09/27/2015 05:23:00 - 修订版本: 2.0

  • kbinfo kbmt KB819124 KbMtzh
反馈