socket error即Windows套接字错误代码

返回代码/值 描述
WSA_INVALID_HANDLE
6
指定的事件对象句柄无效。
应用程序尝试使用事件对象,但指定的句柄无效。请注意,此错误由操作系统返回,因此Windows的将来的版本中的错误号可能会更改。
WSA_NOT_ENOUGH_MEMORY
8
内存不足。
应用程序使用直接映射到Windows功能的Windows Sockets功能。Windows功能表明缺少所需的内存资源。请注意,此错误由操作系统返回,因此Windows的将来的版本中的错误号可能会更改。
WSA_INVALID_PARAMETER
87
一个或多个参数无效。
应用程序使用直接映射到Windows功能的Windows Sockets功能。Windows功能指示一个或多个参数有问题。请注意,此错误由操作系统返回,因此Windows的将来的版本中的错误号可能会更改。
WSA_OPERATION_ABORTED
995
重叠操作中止。
由于套接字关闭,或者在WSAIoctl中执行SIO_FLUSH命令,重叠操作被取消 。请注意,此错误由操作系统返回,因此Windows的将来的版本中的错误号可能会更改。
WSA_IO_INCOMPLETE
996
重叠的I / O事件对象未处于告警状态。
应用程序已尝试确定尚未完成的重叠操作的状态。在轮询模式下使用WSAGetOverlappedResult(fWait标志设置为FALSE)的应用程序, 以确定重叠操作何时完成,获取此错误代码,直到操作完成。请注意,此错误由操作系统返回,因此Windows的将来的版本中的错误号可能会更改。
WSA_IO_PENDING
997
重叠操作将在以后完成。
应用程序已启动无法立即完成的重叠操作。操作完成后,将提供完成指示。请注意,此错误由操作系统返回,因此Windows的将来的版本中的错误号可能会更改。
WSAEINTR
10004
中断功能调用。
阻塞操作被调用WSACancelBlockingCall中断 。
WSAEBADF
10009
文件句柄无效。
提供的文件句柄无效。
WSAEACCES
10013
没有权限。
尝试以其访问权限禁止的方式访问套接字。使用setsockopt(SO_BROADCAST)设置广播许可的sendto广播地址是一个例子 。
WSAEACCES错误的另一个可能的原因是当 调用绑定函数(在具有SP4和更高版本的Windows NT 4.0上)时,另一个应用程序,服务或内核模式驱动程序被绑定到具有独占访问权限的同一地址。这种独占访问是具有SP4及更高版本的Windows NT 4.0的新功能,并且通过使用SO_EXCLUSIVEADDRUSE选项来实现。
WSAEFAULT
10014
地址不正确
在尝试使用调用的指针参数时,系统检测到无效的指针地址。如果应用程序传递无效的指针值,或者缓冲区的长度太小,则会发生此错误。例如,如果作为sockaddr结构的参数的长度小于sizeof(sockaddr)的长度。
WSAEINVAL
10022
无效的论点。
提供了一些无效参数(例如,为setsockopt函数指定一个无效级别 )。在某些情况下,它还引用了套接字的当前状态,例如,在未侦听的套接字上调用 accept。
WSAEMFILE
10024
打开文件太多
打开插座太多 每个实现可以具有可用的最大数量的套接字句柄,全局,每个进程或每个线程。
WSAEWOULDBLOCK
10035
资源暂时不可用。
从无法立即完成的非阻塞套接字上的操作返回此错误,例如, 当没有数据排队等待从套接字读取时的recv。这是一个非致命错误,操作应该稍后重试。作为在非阻塞SOCK_STREAM套接字上调用connect的结果报告WSAEWOULDBLOCK是正常现象 ,因为必须经过一段时间才能建立连接。
WSAEINPROGRESS
10036
现在正在进行中。
正在执行阻止操作。Windows套接字只允许一个单独的阻塞操作 - 任务或线程 - 未完成,如果进行任何其他函数调用(无论是否引用该任何其他套接字),则该功能都将失败,并导致WSAEINPROGRESS错误。
WSAEALREADY
10037
操作已经进行中。
一个操作试图在非阻塞套接字与操作已经在进行中,即,主叫 连接在已经连接,或取消的异步请求(非阻塞套接字的第二时间WSAAsyncGetXbyY)已经被取消或完成。
WSAENOTSOCK
10038
非插槽上的套接字操作。
尝试了一个不是套接字的操作。socket句柄参数没有引用有效的套接字,或者对于 select,fd_set的成员 无效。
WSAEDESTADDRREQ
10039
目的地址需要。
在套接字上的操作中省略了所需的地址。例如,如果使用远程地址ADDR_ANY调用sendto,则返回此错误 。
WSAEMSGSIZE
10040
留言太久
在数据报套接字上发送的消息大于内部消息缓冲区或其他网络限制,或者用于接收数据报的缓冲区小于数据报本身。
WSAEPROTOTYPE
10041
套接字的协议错误类型。
在不支持所请求的套接字类型的语义的套接字函数调用中指定了协议 。例如,无法使用SOCK_STREAM的套接字​​类型指定ARPA Internet UDP协议。
WSAENOPROTOOPT
10042
错误的协议选项。
在getsockopt或 setsockopt调用中指定了未知的,无效的或不受支持的选项或级别 。
WSAEPROTONOSUPPORT
10043
协议不支持
请求的协议尚未配置到系统中,或者不存在实现。例如, 套接字调用请求一个SOCK_DGRAM套接字,但指定一个流协议。
WSAESOCKTNOSUPPORT
10044
不支持套接字类型
在该地址族中不存在对指定套接字类型的支持。例如,可以在套接字调用中选择可选类型SOCK_RAW ,实现不支持SOCK_RAW套接字。
WSAEOPNOTSUPP
10045
操作不支持
引用的对象类型不支持尝试的操作。通常情况下,当一个不能支持此操作的套接字描述符尝试接受数据报套接字上的连接时。
WSAEPFNOSUPPORT
10046
不支持协议族
协议族尚未配置到系统中,也没有实现。这个消息与WSAEAFNOSUPPORT略有不同。但是,在大多数情况下,它可以互换,并且返回其中一个消息的所有Windows Sockets函数也指定WSAEAFNOSUPPORT。
WSAEAFNOSUPPORT
10047
地址家族不支持协议族。
使用与请求的协议不兼容的地址。所有套接字都使用关联的地址系列(即Internet协议的AF_INET)和通用协议类型(即SOCK_STREAM)创建。如果在套接字调用中显式请求了不正确的协议,或者如果将一个错误的系列地址用于套接字(例如在sendto中), 则返回此错误 。
WSAEADDRINUSE
10048
地址已在使用。
通常,每个套接字地址(协议/ IP地址/端口)只允许使用一个。如果应用程序尝试将套接字绑定到已经用于现有套接字的IP地址/端口,或未正确关闭的套接字或尚未关闭的套接字,则会发生此错误 。对于需要将多个套接字绑定到相同端口号的服务器应用程序 ,请考虑使用 setsockopt(SO_REUSEADDR)。客户端应用程序通常不需要调用 绑定在清一色连接会自动选择一个未使用的端口。当 绑定使用通配符地址(涉及到ADDR_ANY)进行调用,WSAEADDRINUSE错误可能会延迟到特定地址提交。这可能会在以后调用另一个函数,包括 connect, listen, WSAConnect或 WSAJoinLeaf。
WSAEADDRNOTAVAIL
10049
无法分配请求的地址。
请求的地址在其上下文中无效。这通常是由于尝试 绑定到对本地计算机无效的地址。当远程地址或端口对远程计算机无效(例如,地址或端口0)时,这也可能来自 connect, sendto, WSAConnect, WSAJoinLeaf或 WSASendTo。
WSAENETDOWN
10050
网络关闭
套接字操作遇到死网络。这可能表示网络系统(即Windows Sockets DLL运行的协议栈),网络接口或本地网络本身的严重故障。
WSAENETUNREACH
10051
网络不可达。
尝试对无法访问的网络进行套接字操作。这通常意味着本地软件不知道到达远程主机的路由。
WSAENETRESET
10052
网络在重置时丢弃连接。
由于在操作进行过程中检测到故障的保持活动活动,连接已被破坏。如果尝试在已经失败的连接上设置SO_KEEPALIVE,它也可以由setsockopt返回 。
WSAECONNABORTED
10053
软件导致连接中止。
主机中的软件中断了一个已建立的连接,可能是由于数据传输超时或协议错误。
WSAECONNRESET
10054
连接由对等体复位。
现有连接被远程主机强行关闭。通常,如果远程主机上的对等应用程序突然停止,主机将重新启动,主机或远程网络接口被禁用,或远程主机使用硬关闭(通常参见setsockopt有关远程主机上的SO_LINGER选项的更多信息)插座)。如果在一个或多个操作进行过程中由于保持活动检测到故障而导致连接中断,则也可能导致此错误。正在进行的操作失败了WSAENETRESET。随后的操作失败,WSAECONNRESET。
WSAENOBUFS
10055
没有可用的缓冲区。
由于系统缺少足够的缓冲区空间或队列已满,因此无法执行套接字上的操作。
WSAEISCONN
10056
套接字已经连接。
连接请求是在已连接的插座上进行的。如果在连接的SOCK_DGRAM套接字上调用sendto,则某些实现也会返回此错误 (对于SOCK_STREAM套接字,忽略sendto中的to参数 ),尽管其他实现将此视为合法事件。
WSAENOTCONN
10057
套接字未连接。
不允许发送或接收数据的请求,因为套接字未连接,(当使用sendto发送到数据报套接字时 )没有提供地址。任何其他类型的操作也可能会返回此错误 - 例如,如果连接已重置,则 setsockopt设置为SO_KEEPALIVE。
WSAESHUTDOWN
10058
套接字关闭后无法发送。
发送或接收数据的请求是不允许的,因为套接字已经在先前关闭呼叫的方向上已被关闭 。通过调用 关机,请求部分关闭套接字,这是发送或接收的信号,或两者都已中止。
WSAETOOMANYREFS
10059
引用太多
对一些内核对象引用太多。
WSAETIMEDOUT
10060
连接超时。
连接尝试失败,因为连接方在一段时间后没有正确响应,或连接的主机无法响应,建立的连接失败。
WSAECONNREFUSED
10061
拒绝连接。
不能连接,因为目标计算机主动拒绝它。这通常是由于尝试连接到在外部主机上处于非活动状态的服务,即没有运行服务器应用程序的服务。
WSAELOOP
10062
无法翻译名称。
无法翻译名称。
WSAENAMETOOLONG
10063
名字太长
名称组件或名称太长。
WSAEHOSTDOWN
10064
主机已关闭。
由于目标主机关闭,套接字操作失败。套接字操作遇到死主机。本地主机上的网络活动尚未启动。这些条件更有可能由WSAETIMEDOUT错误指示。
WSAEHOSTUNREACH
10065
没有到主机的路由。
尝试对无法访问的主机进行套接字操作。见WSAENETUNREACH。
WSAENOTEMPTY
10066
目录不为空。
无法删除不为空的目录。
WSAEPROCLIM
10067
过程过多
Windows套接字实现可能对可以同时使用的应用程序数量有限制。 如果达到限制,WSAStartup可能会失败,并出现此错误。
WSAEUSERS
10068
超过用户配额。
超出用户配额。
WSAEDQUOT
10069
超过了磁盘配额。
超出磁盘配额。
WSAESTALE
10070
陈旧的文件句柄引用。
文件句柄引用不再可用。
WSAEREMOTE
10071
物品遥远
该项目在本地不可用。
WSASYSNOTREADY
10091
网络子系统不可用。
如果Windows Sockets实现无法正常运行,WSAStartup会返回此错误, 因为它用于提供网络服务的底层系统当前不可用。用户应检查:
相应的Windows Sockets DLL文件位于当前路径中。
他们并不试图同时使用多个Windows Sockets实现。如果系统上有多个Winsock DLL,请确保路径中的第一个适用于当前加载的网络子系统。
Windows Sockets实施文档确保所有必需的组件当前已正确安装和配置。
WSAVERNOTSUPPORTED
10092
Winsock.dll版本超出范围。
当前的Windows Sockets实现不支持应用程序请求的Windows套接字规范版本。检查是否没有旧的Windows Sockets DLL文件被访问。
WSANOTINITIALISED
10093
成功的WSAStartup尚未执行。
应用程序尚未调用 WSAStartup或 WSAStartup失败。应用程序可能正在访问当前活动任务不拥有的套接字(即,尝试在任务之间共享套接字),或者 已经调用了WSACleanup太多次。
WSAEDISCON
10101
正常关机正在进行中。
由WSARecv和 WSARecvFrom返回, 表示远程方已启动了正常的关机顺序。
WSAENOMORE
10102
没有更多的结果。
WSALookupServiceNext函数不能返回更多的结果。
WSAECANCELLED
10103
通话已被取消。
在此调用仍在处理时,调用了WSALookupServiceEnd函数。通话已取消。
WSAEINVALIDPROCTABLE
10104
过程调用表无效。
服务提供者过程调用表无效。服务提供商将一个虚假的过程表返回给Ws2_32.dll。这通常是由一个或多个函数指针为NULL引起的。
WSAEINVALIDPROVIDER
10105
服务提供商无效。
请求的服务提供者无效。如果无法找到指定的协议条目,WSCGetProviderInfo和WSCGetProviderInfo32函数将返回此错误。如果服务提供商返回的版本号不是2.0,也会返回此错误。
WSAEPROVIDERFAILEDINIT
10106
服务提供商无法初始化。
请求的服务提供程序无法加载或初始化。如果服务提供商的DLL无法加载(LoadLibrary失败)或提供程序的 WSPStartup或NSPStartup函数失败,则返回此错误。
WSASYSCALLFAILURE
10107
系统调用失败。
永远不会失败的系统调用失败。这是一个通用的错误代码,在各种条件下返回。
当不应该失败的系统调用失败时返回。例如,如果对WaitForMultipleEvents的调用失败或其中一个注册表函数尝试操纵协议/命名空间目录失败。
当提供程序不返回SUCCESS并且不提供扩展错误代码时返回。可以指示服务提供商实现错误。
WSASERVICE_NOT_FOUND
10108
无法提供服务。
没有这样的服务是已知的。在指定的名称空间中找不到该服务。
WSATYPE_NOT_FOUND
10109
找不到类类型
没有找到指定的类。
WSA_E_NO_MORE
10110
没有更多的结果。
WSALookupServiceNext函数不能返回更多的结果。
WSA_E_CANCELLED
10111
通话被取消。
在此调用仍在处理时,调用了WSALookupServiceEnd函数。通话已取消。
WSAEREFUSED
10112
数据库查询被拒绝。
数据库查询失败,因为它被积极拒绝。
WSAHOST_NOT_FOUND
11001
主机未找到。
没有这样的主机是已知的。该名称不是正式的主机名或别名,或者在正被查询的数据库中找不到。也可能会为协议和服务查询返回此错误,并且意味着在相关数据库中找不到指定的名称。
WSATRY_AGAIN
11002
未找到非授权主机。
这通常是主机名解析过程中的临时错误,意味着本地服务器没有收到权威服务器的响应。稍后重试可能会成功。
WSANO_RECOVERY
11003
这是一个不可恢复的错误。
这表示在数据库查找期间发生某种不可恢复的错误。这可能是因为无法找到数据库文件(例如,BSD兼容的HOSTS,SERVICES或PROTOCOLS文件),或者服务器返回严重错误的DNS请求。
WSANO_DATA
11004
有效名称,无请求类型的数据记录。
请求的名称有效,并在数据库中找到,但没有正确的关联数据被解析。通常的示例是使用DNS(域名服务器)的主机名到地址转换尝试(使用 gethostbyname或 WSAAsyncGetHostByName)。返回MX记录,但没有A记录 - 指示主机本身存在,但不能直接访问。
WSA_QOS_RECEIVERS
11005
QoS接收器
至少有一个QoS保留已经到达。
WSA_QOS_SENDERS
11006
QoS发送者
至少有一个QoS发送路径到达。
WSA_QOS_NO_SENDERS
11007
没有QoS发送者
没有QoS发件人。
WSA_QOS_NO_RECEIVERS
11008
QoS无接收器
没有QoS接收器。
WSA_QOS_REQUEST_CONFIRMED
11009
QoS请求已确认。
QoS保留请求已被确认。
WSA_QOS_ADMISSION_FAILURE
11010
QoS准入错误。
由于缺少资源而发生QoS错误。
WSA_QOS_POLICY_FAILURE
11011
QoS策略失败
QoS请求被拒绝,因为策略系统无法在现有策略中分配请求的资源。
WSA_QOS_BAD_STYLE
11012
QoS不好的风格。
遇到未知或冲突的QoS风格。
WSA_QOS_BAD_OBJECT
11013
QoS不好的对象。
一般来说,filterspec或提供程序特定缓冲区的某些部分遇到问题。
WSA_QOS_TRAFFIC_CTRL_ERROR
11014
QoS流量控制错误。
基础流量控制(TC)API作为通用QoS请求的错误被TC API转换为本地执行。这可能是由于内存不足错误或内部QoS提供程序错误。
WSA_QOS_GENERIC_ERROR
11015
QoS通用错误。
一般的QoS错误。
WSA_QOS_ESERVICETYPE
11016
QoS服务类型错误。
在QoS流规范中发现无效或无法识别的服务类型。
WSA_QOS_EFLOWSPEC
11017
QoS流量错误。
在QOS结构中发现无效或不一致的流程。
WSA_QOS_EPROVSPECBUF
11018
QoS提供程序缓冲区无效。
无效的QoS提供者特定缓冲区。
WSA_QOS_EFILTERSTYLE
11019
QoS过滤器样式无效。
使用无效的QoS过滤器样式。
WSA_QOS_EFILTERTYPE
11020
QoS过滤器类型无效。
使用无效的QoS过滤器类型。
WSA_QOS_EFILTERCOUNT
11021
QoS过滤器计数不正确
在FLOWDESCRIPTOR中指定了错误的QoS FILTERSPEC数量。
WSA_QOS_EOBJLENGTH
11022
QoS对象长度无效。
具有无效ObjectLength字段的对象在QoS提供者特定的缓冲区中被指定。
WSA_QOS_EFLOWCOUNT
11023
错误的QoS流量计数。
在QoS结构中指定了不正确的流描述符数量。
WSA_QOS_EUNKOWNPSOBJ
11024
无法识别的QoS对象
在QoS提供商特定的缓冲区中发现一个无法识别的对象。
WSA_QOS_EPOLICYOBJ
11025
无效的QoS策略对象。
在QoS提供商特定的缓冲区中找到无效的策略对象。
WSA_QOS_EFLOWDESC
11026
无效的QoS流描述符。
在流描述符列表中找到了一个无效的QoS流描述符。
WSA_QOS_EPSFLOWSPEC
11027
无效的QoS提供者特定流规范。
在QoS提供者特定的缓冲区中发现了一个无效或不一致的流规。
WSA_QOS_EPSFILTERSPEC
11028
无效的QoS提供程序特定的过滤器规范。
在QoS提供商特定缓冲区中发现无效的FILTERSPEC。
WSA_QOS_ESDMODEOBJ
11029
QoS形状丢弃模式对象无效。
在QoS提供商特定缓冲区中发现无效的形状丢弃模式对象。
WSA_QOS_ESHAPERATEOBJ
11030
无效的QoS整形率对象。
在QoS提供者特定缓冲区中找到了一个无效的整形速率对象。
WSA_QOS_RESERVED_PETYPE
11031
保留策略QoS元素类型。
在QoS提供商特定缓冲区中发现了保留策略元素。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值