(转)Windows 套接字错误代码、 值,和的含义

原文地址: http://support.microsoft.com/kb/819124/zh-cn

[转载]本文介绍了可能的错误代码由 WSAGetLastError(Wsapiref_2tiq.asp) 函数返回的。错误错误宏按字母顺序列出。有些 Winsock2.h 中定义的错误代码并不会从任何函数返回。 在这篇文章中不包括这些错误代码。

 

WSAEINTR (10004)

  • 翻译: 中断函数调用。
  • 说明: 一个阻塞操作被中断 WSACancelBlockingCall (Wsapiref_704y.asp) 调用。

 

WSAEACCES (10013)

  • 翻译: 权限被拒绝。
  • 说明: 访问被禁止通过其访问权限的方式的套接字的尝试。例如对于广播的地址用于 sendto 但广播的权限不通过 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)

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

WSAEINVAL (10022)

  • 翻译: 无效的参数。
  • 说明setsockopt (Wsapiref_94aa.asp) 函数提供了一个无效参数 (例如对于一个参数指定了无效的级别的)。有时,它也是指在套接字的当前状态,例如对于电话接受 (Wsapiref_13aq.asp) 上未侦听套接字。

WSAEMFILE (10024)

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

WSAEWOULDBLOCK (10035)

  • 翻译: 资源暂时不可用。
  • 说明: 此错误时返回对无法立即完成,例如对于的非阻塞套接字操作从接收 (Wsapiref_2i9e.asp) 没有数据正在排队等待从套接字读取。它是一个非严重错误,可以稍后重新尝试该操作。 WSAEWOULDBLOCK 通常报告结果的电话连接 (Wsapiref_8m7m.asp) SOCK_STREAM 非阻塞套接字,因为若要在建立连接必须经过一些时间。

WSAEINPROGRESS (10036)

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

WSAEALREADY (10037)

  • 翻译: 已在进行的操作。
  • 说明: 操作正在进行时,已将一个操作在非阻塞套接字上尝试。例如对于电话连接 (Wsapiref_8m7m.asp),在第二次尝试在非阻塞套接字已经连接上或异步请求 (WSAAsyncGetXbyY),在尝试已经已取消或完成的。

WSAENOTSOCK (10038)

  • 翻译: 套接字上 nonsocket 的操作。
  • 说明: 在某些内容不是一个套接字上已尝试的操作。套接字的句柄参数没有引用有效的套接字,或者一个 fd_set 的成员的选择 (Wsapiref_1ab6.asp),已无效。

WSAEDESTADDRREQ (10039)

  • 翻译: 所需的目标地址。
  • 说明: 从上一个套接字的操作中忽略的所需的地址。例如对于 sendto (Wsapiref_4sqa.asp) 称为 ADDR_ANY 的远程地址,则返回此错误。

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)

  • 翻译: 地址不受协议系列的系列。
  • 说明: 使用地址与请求的协议不兼容。具有一个相关联的地址族 (也就是为 Internet 协议的 AF_INET) 和 $ 通用协议类型 (也就是 SOCK_STREAM) 创建所有的套接字。如果不正确的协议明确请求的套接字 (Wsapiref_2qr6.asp) 调用中,或者如果此错误的系列的一个地址用于一个插座例如对于 sendto (Wsapiref_4sqa.asp) 中,将返回此错误。

WSAEADDRINUSE (10048)

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

WSAEADDRNOTAVAIL (10049)

  • 翻译: 不能分配请求的地址。
  • 说明: 该请求的地址是在其上下文中的无效。导致此错误通常试图绑定 (Wsapiref_6vzm.asp) 到一个无效的本地计算机的地址。此错误可能还会从连接 (Wsapiref_8m7m.asp) sendto (Wsapiref_4sqa.asp) WSAConnect (Wsapiref_8kc2.asp)、 WSAJoinLeaf (Wsapiref_7dv6.asp) 或 WSASendTo (Wsapiref_752q.asp) 时远程地址或端口是无效的远程计算机 (for example,地址或端口 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)

  • 翻译: 套接字已连接。
  • 说明: 在一个已连接的套接字上发出的连接请求。某些实现也返回此错误如果 sendto (Wsapiref_4sqa.asp) 称为已连接的 SOCK_DGRAM 套接字上 (对于 sendto (Wsapiref_4sqa.asp) 中的收件人参数的 SOCK_STREAM 套接字将被忽略) 尽管其他实现将此视为有效的匹配项。

WSAENOTCONN (10057)

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

WSAESHUTDOWN (10058)

  • 翻译: 套接字关闭后无法发送。
  • 说明: 由于套接字有已被关闭,因此在使用以前的关闭 (Wsapiref_60z6.asp) 调用该方向,不允许发送或接收数据的请求。 在调用关机时请求的套接字的部分关闭。这是一个信号,发送或接收进程 (或两者) 已被停用。

WSAETIMEDOUT (10060)

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

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 兼容 HOSTS、 服务,或协议文件),或者如果出现严重错误,服务器返回了一个 DNS 请求,就可能发生此错误。

WSANO_DATA (11004)

  • 翻译: 有效的名称、 请求类型的任何数据记录。
  • 说明: 所请求的名称有效并且已在数据库中, 找到,但它不具有正确的关联的数据的正在被解析的。典型的示例对此尝试是一个主机名到地址转换 (使用 gethostbyname [Wsapiref_0q5u.asp] 或 WSAAsyncGetHostByName [Wsapiref_7bhu.asp]) 使用 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。(这是通常所致的一个或多个被空的函数指针)。

WSAINVALIDPROVIDER (取决于操作系统系统)

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

WSAPROVIDERFAILEDINIT (取决于操作系统系统)

  • 翻译: 无法初始化服务提供商。
  • 说明: 不能是两者之一一个服务提供商的 DLL 加载 (LoadLibrary 失败),或提供程序的 WSPStartup/NSPStartup 函数失败。

WSASYSCALLFAILURE (取决于操作系统系统)

  • 翻译: 系统调用失败。
  • 说明: 当一个永远不会发生故障的系统调用失败时,将返回此错误。例如对于如果 WaitForMultipleObjects 的调用失败或注册表函数之一失败尝试更改协议或 $ 名称空间目录,将发生此错误。
posted @ 2012-04-27 11:03  clouds008  阅读(2049)  评论(0)    收藏  举报