socket错误详解
socket error 10053,10054究竟是怎么引起的

贴2段能稳定重现10053的代码,下面是客户端:[cpp]view plaincopy1.WORD VersionRequested;2.WSADATA WsaData;3.4.VersionRequested = MAKEWORD(2, 2);5.6.if (WSAStartup(VersionRequested, &WsaData))7.return -1;8.9.SOCKET SocketServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);10.SOCKADDR_IN AddrServer;11.AddrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");12.AddrServer.sin_port = htons(9999);13.AddrServer.sin_family = AF_INET;14.15.// 连接服务器16.if (0 != connect(SocketServer, (SOCKADDR *)&AddrServer, sizeof(SOCKADDR)))17.{18. closesocket(SocketServer);19.return false;20.}21.22.int err = 0;23.char temp[] = "hello, server";24.int rs = send(SocketServer, temp, sizeof(temp) + 1, 0);25.26.char buff[1024] = {0};27.rs = recv(SocketServer, buff, sizeof(buff), 0);28.29.// 下面这2句代码如果注释掉,后面的recv就能正解的返回0。
如果不注释掉,recv就会返回-1,30.// 并得到10053这个错误31.rs = send(SocketServer, temp, sizeof(temp) + 1, 0);32.err = WSAGetLastError();33.34.rs = recv(SocketServer, buff, sizeof(buff), 0);35.err = WSAGetLastError();36.37.system("pause");38.return 0;这个是服务器的:[cpp]view plaincopy1.WORD VersionRequested;2.WSADATA WsaData;3.4.VersionRequested = MAKEWORD(2, 2);5.6.if (WSAStartup(VersionRequested, &WsaData))7.{8. printf("加载socket库失败!\n");9.return -1;10.}11.12.// 监听来自浏览器的请求13.SOCKET SockServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);14.SOCKADDR_IN AddrClient;15.AddrClient.sin_family = AF_INET;16.AddrClient.sin_addr.s_addr = INADDR_ANY;17.AddrClient.sin_port = htons(9999);18.19.if (SockServer == INVALID_SOCKET)20.{21. printf("socket初始化失败!\n");22. closesocket(SockServer);23. WSACleanup();24.return -1;25.}26.27.if (bind(SockServer, (sockaddr*)&AddrClient, sizeof(AddrClient)) != 0)28.{29. printf("socket绑定失败!\n");30. closesocket(SockServer);31. WSACleanup();32.return -1;33.}34.35.if (listen(SockServer, 10) != 0)36.{37. printf("socket监听失败!\n");38. closesocket(SockServer);39. WSACleanup();40.return -1;41.}42.43.while (1)44.{45. SOCKET NewSocket = accept(SockServer, NULL, NULL);46.if (INVALID_SOCKET == NewSocket)47. {48. closesocket(NewSocket);49.continue;50. }51.else52. {53.struct linger so_linger;54. so_linger.l_onoff = 1;55. so_linger.l_linger = 30;56. setsockopt(NewSocket ,SOL_SOCKET, SO_LINGER, (const char*)&so_linger, sizeof(so_linger));57. }58.59.char buff[1024];60.int rs = recv(NewSocket, buff, sizeof(buff), 0);61.62.char temp[] = "hello, client";63. rs = send(NewSocket, temp, sizeof(temp) + 1, 0);64.65. closesocket(NewSocket);66.}10053里说的software在我的例子中指的就是那个send函数吗,是send函数执行的时候,发现对方的套接字已经关闭了,所以它把己方的套接字也关掉了吗,然后导致后续的recv 报错10053?出现10053的原因是因为在你执行这次send的时候对端已经执行过closesocket了,而发送的数据还是被成功的推入了发送缓冲区中,因此返回了0,此时你可能还没得到FIN消息,而紧接着recv这边就得到了对端关闭socket的FIN消息,因此此时需要放弃发送缓冲中的数据,异常终止连接,所以得到了10053错误:您的主机中的软件中止了一个已建立的连接。
Socket编程协议错误代码解析

10004—WSAEINTR函数调用中断。
该错误表明由于对WSACancelBlockingCall的调用,造成了一次调用被强行中断。
10009—WSAEBADF文件句柄错误。
该错误表明提供的文件句柄无效。
在MicrosoftWindowsCE下,socket函数可能返回这个错误,表明共享串口处于“忙”状态。
10013—WSAEACCES权限被拒。
尝试对套接字进行操作,但被禁止。
若试图在sendto或WSASendTo中使用一个广播地址,但是尚未用setsockopt和SO_BROADCAST这两个选项设置广播权限,便会产生这类错误。
10014—WSAEFAULT地址无效。
传给Winsock函数的指针地址无效。
若指定的缓冲区太小,也会产生这个错误。
10022—WSAEINVAL参数无效。
指定了一个无效参数。
例如,假如为WSAIoctl调用指定了一个无效控制代码,便会产生这个错误。
另外,它也可能表明套接字当前的状态有错,例如在一个目前没有监听的套接字上调用accept或WSAAccept。
10024—WSAEMFILE打开文件过多。
提示打开的套接字太多了。
通常,Microsoft提供者只受到系统内可用资源数量的限制。
10035—WSAEWOULDBLOCK资源暂时不可用。
对非锁定套接字来说,如果请求操作不能立即执行的话,通常会返回这个错误。
比如说,在一个非暂停套接字上调用connect,就会返回这个错误。
因为连接请求不能立即执行。
10036—WSAEINPROGRESS操作正在进行中。
当前正在执行非锁定操作。
一般来说不会出现这个错误,除非正在开发16位Winsock应用程序。
10037—WSAEALREADY操作已完成。
一般来说,在非锁定套接字上尝试已处于进程中的操作时,会产生这个错误。
比如,在一个已处于连接进程的非锁定套接字上,再一次调用connect或WSAConnect。
另外,服务提供者处于执行回调函数(针对支持回调例程的Winsock函数)的进程中时,也会出现这个错误。
socket异常解决方案

socket异常解决方案
《Socket异常解决方案》
在开发网络应用程序时,我们经常会遇到socket异常的问题。
socket异常可能会导致网络连接失败,数据传输中断,甚至导
致程序崩溃。
在面对这些问题时,我们需要及时解决并找出根本原因。
首先,我们需要了解造成socket异常的可能原因。
常见的原
因包括网络连接问题,服务器故障,数据包丢失等。
在了解了可能的原因后,就需要针对性地解决这些问题。
解决socket异常的方案可能包括以下几点:
1. 检查网络连接:确认网络连接是否正常,尝试其他网络环境,比如切换到4G网络或者使用VPN连接。
如果网络连接出现
问题,可能是导致socket异常的原因之一。
2. 重启服务器:如果是服务器端出现了问题,可以尝试重启服务器或者联系服务器管理员进行排查。
3. 检查数据包:数据包丢失可能会导致socket异常,对于这
种情况,我们可以使用数据包监控工具来检查数据传输情况,找出问题所在。
4. 异常处理:在程序中加入异常处理机制是很重要的,比如捕获socket异常并进行相应的处理,比如重新连接,重传数据
等。
5. 更新软件版本:有时socket异常可能是由于软件版本过低或者存在bug所致,及时更新软件版本可能解决这些问题。
总之,解决socket异常需要综合考虑网络环境、服务器端和客户端的问题,及时采取合理的措施来解决和避免出现异常情况。
希望上述的解决方案能帮助大家更好地解决socket异常的问题。
socket错误码(精品)

Sockets/Windows Sockets错误码Windows Sockets在头文件winsock.h中定义了所有的错误码,它们包括以“WSA”打头的Windows Sockets实现返回的错误码和Berkeley Sockets定义的错误码全集。
定义Berkeley Sockets错误码是为了确保原有软件的可移植性。
WSAEACCES (10013) Permission denied.试图使用被禁止的访问权限去访问套接字。
例如,在没有使用函数setsockopt()的SO_BROADCAST命令设置广播权限的套接字上使用函数sendto()给一个广播地址发送数据。
WSAEADDRINUSE (10048)Address already in use.正常情况下每一个套接字地址(协议/IP地址/端口号)只允许使用一次。
当应用程序试图使用bind()函数将一个被已存在的或没有完全关闭的或正在关闭的套接字使用了的IP地址/端口号绑扎到一个新套接字上时,该错误发生。
对于服务器应用程序来说,如果需要使用bind()函数将多个套接字绑扎到同一个端口上,可以考虑使用setsockopt()函数的SO_REUSEADDR命令。
客户应用程序一般不必使用bind()函数——connect()函数总是自动选择没有使用的端口号。
当bind()函数操作的是通配地址(包括ADDR_ANY)时,错误WSAEADDRINUSE可能延迟到一个明确的地址被提交时才发生。
这可能在后续的函数如connect()、listen()、WSAConnect()或WSAJoinLeaf()调用时发生。
WSAEADDRNOTAVAIL (10049)Cannot assign requested address.被请求的地址在它的环境中是不合法的。
通常地在bind()函数试图将一个本地机器不合法的地址绑扎到套接字时产生。
它也可能在connect()、sendto()、WSAConnect()、WSAJoinLeaf()或WSASendTo()函数调用时因远程机器的远程地址或端口号非法(如0地址或0端口号)而产生。
Socket的错误码和描述

Socket的错误码和描述Socket的错误码和描述(中英文翻译)//下面是Socket Error的错误码和描述:Socket error 0 - Directly send errorSocket error 10004 - Interrupted function //call 操作被终止Socket error 10013 - Permission denied //c访问被拒绝Socket error 10014 - Bad address //c地址错误Socket error 10022 - Invalid argument //参数错误Socket error 10024 - Too many open files // 打开太多的socketsSocket error 10035 - Resource temporarily unavailable // 没有可以获取的资料Socket error 10036 - Operation now in progress // 一个阻塞操作正在进行中Socket error 10037 - Operation already in progress // 操作正在进行中Socket error 10038 - Socket operation on non-socket //非法的socket对象在操作Socket error 10039 - Destination address required //目标地址错误Socket error 10040 - Message too long //数据太长Socket error 10041 - Protocol wrong type for socket //协议类型错误Socket error 10042 - Bad protocol option // 错误的协议选项Socket error 10043 - Protocol not supported //协议不被支持Socket error 10044 - Socket type not supported //socket类型不支持Socket error 10045 - Operation not supported //不支持该操作Socket error 10046 - Protocol family not supported //协议族不支持Socket error 10047 - Address family not supported by protocol family//使用的地址族不在支持之列Socket error 10048 - Address already in use //地址已经被使用Socket error 10049 - Cannot assign requested address //地址设置失败Socket error 10050 - Network is down //网络关闭Socket error 10051 - Network is unreachable //网络不可达Socket error 10052 - Network dropped connection on reset //网络被重置Socket error 10053 - Software caused connection abort //软件导致连接退出Socket error 10054 - connection reset by peer //连接被重置Socket error 10055 - No buffer space available //缓冲区不足Socket error 10056 - Socket is already connected // socket已经连接Socket error 10057 - Socket is not connected //socket没有连接Socket error 10058 - Cannot send after socket shutdown //socket已经关闭Socket error 10060 - Connection timed out //超时Socket error 10061 - Connection refused //连接被拒绝Socket error 10064 - Host is down //主机已关闭Socket error 10065 - No route to host // 没有可达的路由Socket error 10067 - Too many processes //进程太多Socket error 10091 - Network subsystem is unavailable //网络子系统不可用Socket error 10092 - WINSOCK.DLL version out of range//winsock.dll版本超出范围Socket error 10093 - Successful WSAStartup not yet performed //没有成功执行WSAStartupSocket error 10094 - Graceful shutdown in progress //Socket error 11001 - Host not found //主机没有找到Socket error 11002 - Non-authoritative host not found // 非授权的主机没有找到Socket error 11003 - This is a non-recoverable error //这是个无法恢复的错误Socket error 11004 - Valid name, no data record of requested type //请求的类型的名字或数据错误WSAEADDRINUSE (10048) Address already in useWSAECONNABORTED (10053) Software caused connection abortWSAECONNREFUSED (10061) Connection refusedWSAECONNRESET (10054) Connection reset by peerWSAEDESTADDRREQ (10039) Destination address required WSAEHOSTUNREACH (10065) No route to hostWSAEMFILE (10024) Too many open filesWSAENETDOWN (10050) Network is downWSAENETRESET (10052) Network dropped connectionWSAENOBUFS (10055) No buffer space availableWSAENETUNREACH (10051) Network is unreachableWSAETIMEDOUT (10060) Connection timed outWSAHOST_NOT_FOUND (11001) Host not foundWSASYSNOTREADY (10091) Network sub-system is unavailableWSANOTINITIALISED (10093) WSAStartup() not performed WSANO_DATA (11004) Valid name, no data of that typeWSANO_RECOVERY (11003) Non-recoverable query error WSATRY_AGAIN (11002) Non-authoritative host foundWSAVERNOTSUPPORTED (10092) Wrong WinSock DLL version。
socket errorno 枚举定义

一、概述在计算机编程中,socket编程是一种常见的网络通信方式,通过socket可以实现不同主机之间的网络通信。
在使用socket编程时,经常会遇到各种错误,而这些错误通常会用errno枚举来表示。
errno 枚举定义了各种可能出现的错误类型,程序员可以根据errno的值来判断程序运行时出现的具体错误,从而进行相应的处理。
二、errno枚举errno枚举定义了许多可能出现的错误类型,下面我将按照错误类型进行分类介绍。
1. 常见错误类型在socket编程中,常见的错误类型包括但不限于以下几种:- EACCES:权限不足,通常指的是对某些系统资源的权限不够。
- EADDRINUSE:位置区域已被使用,通常指的是在绑定socket位置区域时,该位置区域已被其他进程占用。
- EAG本人N:资源暂时不可用,通常指的是资源暂时不可用,需要稍后重试。
- ECONNREFUSED:连接被拒绝,通常指的是远程主机拒绝连接请求。
- EFAULT:位置区域错误,通常指的是指针参数指向的位置区域无效。
- EINTR:中断系统调用,通常指的是系统调用被信号中断。
- EINVAL:无效参数,通常指的是传递给系统调用的参数无效。
- EIO:I/O错误,通常指的是发生了I/O错误。
- EISCONN:已连接,通常指的是socket已经连接。
2. 其他错误类型除了上述常见的错误类型外,errno枚举还定义了许多其他的错误类型,程序员在使用socket编程时可以根据实际情况进行具体的处理。
三、errno值每个错误类型在errno枚举中都有对应的数值,程序员可以通过这些数值来判断程序运行时出现的具体错误。
下面我将列举一些常见的errno值:1. EACCES的值为132. EADDRINUSE的值为483. EAG本人N的值为114. ECONNREFUSED的值为1115. EFAULT的值为146. EINTR的值为47. EINVAL的值为228. EIO的值为59. EISCONN的值为106四、处理错误在程序编写过程中,我们需要针对不同的错误类型进行相应的处理,以保证程序的健壮性和稳定性。
socket常见错误代码解析

socket常见错误代码解析Socket error 0 - Directly send errorSocket error 10004 - Interrupted function callSocket error 10013 - Permission deniedSocket error 10014 - Bad addressSocket error 10022 - Invalid argumentSocket error 10024 - Too many open filesSocket error 10035 - Resource temporarily unavailableSocket error 10036 - Operation now in progressSocket error 10037 - Operation already in progressSocket error 10038 - Socket operation on non-socketSocket error 10039 - Destination address requiredSocket error 10040 - Message too longSocket error 10041 - Protocol wrong type for socketSocket error 10042 - Bad protocol optionSocket error 10043 - Protocol not supportedSocket error 10044 - Socket type not supportedSocket error 10045 - Operation not supportedSocket error 10046 - Protocol family not supportedSocket error 10047 - Address family not supported by protocol family Socket error 10048 - Address already in useSocket error 10049 - Cannot assign requested addressSocket error 10050 - Network is downSocket error 10051 - Network is unreachableSocket error 10052 - Network dropped connection on resetSocket error 10053 - Software caused connection abortSocket error 10054 - Connection reset by peerSocket error 10055 - No buffer space availableSocket error 10056 - Socket is already connectedSocket error 10057 - Socket is not connectedSocket error 10058 - Cannot send after socket shutdownSocket error 10060 - Connection timed outSocket error 10061 - Connection refusedSocket error 10064 - Host is downSocket error 10065 - No route to hostSocket error 10067 - Too many processesSocket error 10091 - Network subsystem is unavailableSocket error 10092 - WINSOCK.DLL version out of rangeSocket error 10093 - Successful WSAStartup not yet performed Socket error 10094 - Graceful shutdown in progressSocket error 11001 - Host not foundSocket error 11002 - Non-authoritative host not foundSocket error 11003 - This is a non-recoverable errorSocket error 11004 - Valid name, no data record of requested typeWSAEADDRINUSE (10048) Address already in useWSAECONNABORTED (10053) Software caused connection abort WSAECONNREFUSED (10061) Connection refusedWSAECONNRESET (10054) Connection reset by peerWSAEDESTADDRREQ (10039) Destination address requiredWSAEHOSTUNREACH (10065) No route to hostWSAEMFILE (10024) Too many open filesWSAENETDOWN (10050) Network is downWSAENETRESET (10052) Network dropped connectionWSAENOBUFS (10055) No buffer space availableWSAENETUNREACH (10051) Network is unreachableWSAETIMEDOUT (10060) Connection timed outWSAHOST_NOT_FOUND (11001) Host not foundWSASYSNOTREADY (10091) Network sub-system is unavailable WSANOTINITIALISED (10093) WSAStartup() not performedWSANO_DATA (11004) V alid name, no data of that typeWSANO_RECOVERY (11003) Non-recoverable query errorWSA TRY_AGAIN (11002) Non-authoritative host foundWSA VERNOTSUPPORTED (10092) Wrong WinSock DLL version++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++常見SOCKET錯誤返回碼WSAEINTR (10004)被中斷的系統呼叫當以阻攔式進行的WinSock函式被WSACancelBlockingCall()中斷的時候,這個阻攔式函式會得到WSAEINTR這個錯誤訊息。
socket异常分析(精)

阻塞Socket 和非阻塞Socket一是阻塞函数,一是非阻塞函数。
所谓阻塞函数,是指其完成指定的任务之前不允许程序调用另一个函数,在Windows 下还会阻塞本线程消息的发送。
所谓非阻塞函数,是指操作启动之后,如果可以立即得到结果就返回结果,否则返回表示结果需要等待的错误信息,不等待任务完成函数就返回常见socket 异常.BindException:Addressalready in use:JVM_Bind。
该异常发生在服务器端进行new ServerSocket(port(port 是一个0,65536的整型值)操作时。
异常的原因是以为与port 一样的一个端口已经被启动,并进行监听。
此时用netstat –an命令,可以看到一个Listending 状态的端口。
只需要找一个没有被占用的端口就能解决这个问题。
.ConnectException:Connection refused:connect 。
该异常发生在客户端进行new Socket(ip,port 操作时,该异常发生的原因是或者具有ip 地址的机器不能找到(也就是说从当前机器不存在到指定ip 路由),或者是该ip 存在,但找不到指定的端口进行监听。
出现该问题,首先检查客户端的ip 和port 是否写错了,如果正确则从客户端ping 一下服务器看是否能ping 通,如果能ping 通(服务服务器端把ping 禁掉则需要另外的办法),则看在服务器端的监听指定端口的程序是否启动,这个肯定能解决这个问题。
.SocketException:Socket is closed ,该异常在客户端和服务器均可能发生。
异常的原因是己方主动关闭了连接后(调用了Socket 的close 方法)再对网络连接进行读写操作。
.SocketException:(Connection reset 或者Connect reset bypeer:Socketwrite error )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 通常报告的调用结果连接(Wsapiref_8m7m.asp) 对非阻止套接字SOCK_STREAM,因为要建立的连接必须经过一些时间。
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 地址/端口) 是。
如果某个程序尝试绑定到一个IP 地址或端口已被使用对于现有的套接字,套接字不正确,请关闭的套接字(Wsapiref_6vzm.asp),会发生此错误或套接字仍然处于关闭过程中。
对于服务器必须将多个套接字绑定到同一端口号的程序,请考虑使用setsockopt (Wsapiref_94aa.asp)(SO_REUSEADDR)。
客户端程序通常不需要在所有调用绑定、连接(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 套接字,sendto (Wsapiref_4sqa.asp)中的收件人参数将被忽略)虽然其他实现将此视为有效的匹配项某些实现属性也返回此错误。
WSAENOTCONN (10057)∙翻译: 套接字未连接。
∙说明:由于套接字没有连接并且(在使用sendto [Wsapiref_4sqa.asp] 在数据报套接字上发送时,未提供地址),不允许发送或接收数据的请求。
任何其他类型的操作也可能会返回此错误,例如,如果连接已被重置设置SO_KEEPALIVE setsockopt (Wsapiref_94aa.asp)。
WSAESHUTDOWN (10058)∙翻译: 套接字关闭后无法发送。
∙说明:由于套接字有已关闭在该方向与以前的关闭(Wsapiref_60z6.asp)调用不允许发送或接收数据的请求。
当调用关闭时,将请求关闭套接字的部分。
这是一个信号,发送或接收进程(或两者)已经停产。