Socket编程协议错误代码解析
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函数)的进程中时,也会出现这个错误。
Linux网络编程socket错误码分析(精品)
Linux网络编程socket错误分析socket错误码:EINTR:4阻塞的操作被取消阻塞的调用打断。
如设置了发送接收超时,就会遇到这种错误。
只能针对阻塞模式的socket。
读,写阻塞的socket时,-1返回,错误号为INTR。
另外,如果出现EINTR即errno为4,错误描述Interrupted system call,操作也应该继续。
如果recv 的返回值为0,那表明连接已经断开,接收操作也应该结束。
ETIMEOUT:1101、操作超时。
一般设置了发送接收超时,遇到网络繁忙的情况,就会遇到这种错误。
2、服务器做了读数据做了超时限制,读时发生了超时。
3、错误被描述为“connect time out”,即“连接超时”,这种情况一般发生在服务器主机崩溃。
此时客户TCP 将在一定时间内(依具体实现)持续重发数据分节,试图从服务TCP 获得一个ACK 分节。
当最终放弃尝试后(此时服务器未重新启动),内核将会向客户进程返回ETIMEDOUT 错误。
如果某个中间路由器判定该服务器主机已经不可达,则一般会响应“destination unreachable”-“目的地不可达”的ICMP消息,相应的客户进程返回的错误是EHOSTUNREACH 或ENETUNREACH。
当服务器重新启动后,由于TCP 状态丢失,之前所有的连接信息也不存在了,此时对于客户端发来请求将回应RST。
如果客户进程对检测服务器主机是否崩溃很有必要,要求即使客户进程不主动发送数据也能检测出来,那么需要使用其它技术,如配置SO_KEEPALIVE Socket 选项,或实现某些心跳函数。
EAGAIN:1、Send返回值小于要发送的数据数目,会返回EAGAIN和EINTR。
2、recv 返回值小于请求的长度时说明缓冲区已经没有可读数据,但再读不一定会触发EAGAIN,有可能返回0表示TCP连接已被关闭。
3、当socket是非阻塞时,如返回此错误,表示写缓冲队列已满,可以做延时后再重试.4、在Linux进行非阻塞的socket接收数据时经常出现Resource temporarily unavailable,errno 代码为11(EAGAIN),表明在非阻塞模式下调用了阻塞操作,在该操作没有完成就返回这个错误,这个错误不会破坏socket的同步,不用管它,下次循环接着recv就可以。
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错误代码表
WSAEWOULDBLOCK (10035) 函式作用阻攔中
WSAETIMEDOUT (10060) Connection timed out
WSAHOST_NOT_FOUND (11001) Host not found
WSASYSNOTREADY (10091) Network sub-system is unavailable
WSANOTINITIALISED (10093) WSAStartup() not performed
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 10037 - Operation already in progress
Socket error 10038 - Socket operation on non-socket
Socket error 10039 - Destination address required
getstockname()
沒有呼叫bind()函式指定socket名稱
listen()
已經處於連接狀態或是socket沒有呼叫bind()函式指定socket名稱
recv()和recvfrom()
對於datagram socket,socket沒有呼叫bind()函式指定IP位址、port和協定等;對於stream socket,連接尚未建立
Socket通信错误代码
Socket通信错误代码WinSock Error CodesThe following error codes apply to the WinSock ActiveX Controls.Error Code Error Message10004 The operation is canceled.10013 The requested address is a broadcast address, but flag is not set.10014 Invalid argument.10022 Socket not bound, invalid address or listen is not invoked prior to accept.10024 No more file descriptors are available, accept queue is empty.10035 Socket is non-blocking and the specified operation will block.10036 A blocking Winsock operation is in progress.10037 The operation is completed. No blocking operation is in progress.10038 The descriptor is not a socket.10039 Destination address is required.10040 The datagram is too large to fit into the buffer and is truncated.10041 The specified port is the wrong type for this socket.10042 Option unknown, or unsupported.10043 The specified port is not supported.10044 Socket type not supported in this address family.10045 Socket is not a type that supports connection oriented service.10047 Address Family is not supported.10048 Address in use.10049 Address is not available from the local machine.10050 Network subsystem failed.10051 The network cannot be reached from this host at this time.10052 Connection has timed out when SO_KEEPALIVE is set.10053 Connection is aborted due to timeout or other failure.10054 The connection is reset by remote side.10055 No buffer space is available.10056 Socket is already connected.10057 Socket is not connected.10058 Socket has been shut down.10060 The attempt to connect timed out.10061 Connection is forcefully rejected.10201 Socket already created for this object.10202 Socket has not been created for this object.11001 Authoritative answer: Host not found.11002 Non-Authoritative answer: Host not found.11003 Non-recoverable errors.11004 Valid name, no data record of requested type.在打开 Socket 时也要捕获异常tryClientSocket.Open;exceptMessageBox(MainForm.Handle,'Error connecting to this address','Connect',MB_ICONEXCLAMATION);end;在 OnError 中最后要将 ErrorCode 置为 0if ErrorEvent=eeConnect thenbeginSocket.Close;MessageBox(MainForm.Handle,'Error connecting to this address','Connect',MB_ICONEXCLAMATION);endelse if ErrorEvent=eeSend thenSocket.Close;ErrorCode:=0;你可能无做第一步而这样也可以区分你所说的两种情况1.第二步OnError 就是此地址上无任何主机存在,到超时就触发OnError 事件2.第一步捕捉到异常就是有主机但被扫描的特定端口不存在。
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。
Windows Sockets 错误码及出错原因
EMSGSIZE
10040
同BSD
WSAEPROTOTYPE
EPROTOTYPE
10041
同BSD
WSAENOPROTOOPT
ENOPROTOOPT
10042
同BSD
WSAEPROTONOSUPPORT
EPROTONOSUPPORT
10043
同BSD
WSAESOCKTNOSUPPORT
NO_RECOVERY
11003
同BSD
WSANO_DATA
NO_DATA
11004
同BSD
A.2Windows Sockets错误码扩展描述
下面给出WSAGetLastError()函数返回的可能错误码按字母顺序排列的列表,同时给出简要的扩展描述。
WSAEACCES (10013) Permission denied.
WSAEDESTADDRREQ (10039) Destination address required.
在套接字上一个操作所必须的地址被遗漏。例如,如果sendto()函数被调用且远程地址为ADDR_ANY时,此错误被返回。
WSAEFAULT (10014) Bad address.
系统检测到调用试图使用的一个指针参数指向的是一个非法指针地址。如果应用程序传递一个非法的指针值,或缓冲区长度太小,此错误发生。例如,参数为结构sockaddr,但参数的长度小于sizeof(struct sockaddr)。
试图和一个不可达主机进行套接字操作。参见WSAENETUNREACH。
WSAEINPROGRESS (10036) Operation now in progress.
socket错误详解
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)时无数据排队要从套接字读取。
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网络编程常见异常概述(1)Socket 类中有很多方法在声明时使用throws 抛出了一些异常,这些异常都是IOException 的子类。
(2)在Socket 类的方法中抛出最多的就是SocketException,其余还有七个异常可供Socket 类的方法抛出。
Java编程语言百科异常概述(1)public class IOException extends Exception这个异常是所有在Socket 类的方法中抛出的异常的父类。
(2)public class SocketException extends IOException这个异常在Socket 类的方法中使用得最频繁。
(3)public class ConnectException extends SocketExceptionConnectException 异常通常发生在由于服务器忙而未响应或是服务器相应的监听端口未打开。
(4)public class BindException extends SocketException这个异常在多个Socket 或ServerSocket 对象绑定在同一个端口,而且未打开SO_REUSEADDR选项时发生。
(5)public class NoRouteToHostException extends SocketException这个异常在遇到防火墙或是路由无法找到主机的情况下发生。
(6)public class UnknownHostException extends IOException这个异常在域名不正确时被抛出。
(7)public class ProtocolException extends IOException这个异常并不经常被抛出。
由于不明的原因,TCP/IP 的数据包被破坏了,这时将抛出ProtocolException 异常。
(8)public class SocketTimeoutException extends InterruptedIOException如果在连接超时和读取数据超时时间过后,服务器仍然未响应,connect 或read 方法抛SocketTimeoutException 异常。
Socket编程协议错误代码解析
10004—WSAEIN TR函数调用中断。
该错误表明由于对WSA CancelBlockingC all的调用,造成了一次调用被强行中断。
10009—WSAEBA DF文件句柄错误。
该错误表明提供的文件句柄无效。
在Micro softW i ndowsCE下,socket函数可能返回这个错误,表明共享串口处于“忙”状态。
10013—WSAEAC CES权限被拒。
尝试对套接字进行操作,但被禁止。
若试图在se ndto或WSASe ndTo中使用一个广播地址,但是尚未用s etsockopt和SO_BR OADCA ST这两个选项设置广播权限,便会产生这类错误。
10014—WSAEFA ULT地址无效。
传给Winsock函数的指针地址无效。
若指定的缓冲区太小,也会产生这个错误。
10022—WSAEIN V AL参数无效。
指定了一个无效参数。
例如,假如为WSA Ioctl调用指定了一个无效控制代码,便会产生这个错误。
另外,它也可能表明套接字当前的状态有错,例如在一个目前没有监听的套接字上调用accept或W SAA ccept。
10024—WSAEMF ILE打开文件过多。
提示打开的套接字太多了。
通常,Microsoft提供者只受到系统内可用资源数量的限制。
10035—WSAEWO ULDBL OCK资源暂时不可用。
对非锁定套接字来说,如果请求操作不能立即执行的话,通常会返回这个错误。
比如说,在一个非暂停套接字上调用connect,就会返回这个错误。
因为连接请求不能立即执行。
10036—WSAEIN PROGR ESS操作正在进行中。
当前正在执行非锁定操作。
一般来说不会出现这个错误,除非正在开发16位Wi nsock应用程序。
Socket Error代码解释大全
Socket error 10036 - Operation now in progress 目前正在执行一个阻止性操作。
Socket error 10037 - Operation already in progress 在一个非阻止性套接字上尝试了一个已经在进行的操作。
Socket error 10043 - Protocol not supported请求的协议还没有在系统中配置,或者没有它存在的迹象。
Socket error 10044 - Socket type not supported 在这个地址家族中不存在对指定的插槽类型的支持。
Socket error 10045 - Operation not supported 参考的对象类型不支持尝试的操作。
Socket error 10041 - Protocol wrong type for socket 在套接字函数调用中指定的一个协议不支持请求的套接字类型的语法。
Socket error 10042 - Bad protocol option在 getsockopt 或 setsockopt 调用中指定的一个未知的、无效的或不受支持的选项或层次。
Socket error 10014 - Bad address系统检测到在一个调用中尝试使用指针参数时的无效指针地址。
Socket error 10022 - Invalid argument提供了一个无效的参数。
Socket error 10024 - Too many open files打开的套接字太多。
常见socket错误返回码
常见SOCK ET错误返回码(转)WSAEIN TR (10004)被中断的系统呼叫当以阻拦式进行的Win Sock函式被WSA Cance lBloc kingC all()中断的时候,这个阻拦式函式会得到W SAEIN TR这个错误讯息。
读者要注意的是,当你的程式有用WSAC ancel Block ingCa ll去中断阻拦式函式的时候,你必须为这个阻拦式函式写处理WS AEINT R错误讯息的程式码,否则你的程式可能会出现些无预期的错误。
原则上,所有能以阻拦式进行的函式都可能会发生这个错误。
WSAEBA DF (10009)错误的档案代码柏克莱soc ket介面中,档案描述子和socke t描述子是相通的,开启sock et可以想像成开启一个档案。
WSAEBA DF在柏克莱sock et介面的意义是指错误的soc ket描述子,这个错误的s ocket描述子可能是未经开启的sock et或是以关闭的so cket。
在WinSo ck中有个相通的错误代码WSA ENOTS OCK,用来指定错误的sock et描述子。
详细说明请参考WSAE NOTSO CK部分。
WSAEAC CES (10013)无此权限对于柏克莱s ocket介面函式,这个错误发生的原因通常是开启一个不具有开启权限的档案或sock et。
例如在UNI X上,一般的使用者不能开启S OCK_R AW的so cket,通常是超级使用者(superuser)才有此权限。
如果一般的使用者企图开启SOCK_RAW的socke t,将会得到这个错误讯息。
对于WinS ock API函式介面,发生此错误的函式有二:send()和sendt o()。
socket异常错误码
SocketException.ErrorCode 列表及注释,Winsocket Error 列表及注释注释是英文的,大家需要可以用翻译软件直接译,大体意思没问题。
WinSock Error CodesThe following error codes apply to the WinSock ActiveX Controls.Error Code Error Message10004 The operation is canceled.操作被取消10013 The requested address is a broadcast address, but flag is not set.10014 Invalid argument.10022 Socket not bound, invalid address or listen is not invoked prior to accept. 10024 No more file descriptors are available, accept queue is empty.10035 Socket is non-blocking and the specified operation will block.10036 A blocking Winsock operation is in progress.10037 The operation is completed. No blocking operation is in progress.10038 The descriptor is not a socket.10039 Destination address is required.10040 The datagram is too large to fit into the buffer and is truncated.10041 The specified port is the wrong type for this socket.10042 Option unknown, or unsupported.10043 The specified port is not supported.10044 Socket type not supported in this address family.10045 Socket is not a type that supports connection oriented service.10047 Address Family is not supported.10048 Address in use.10049 Address is not available from the local machine.10050 Network subsystem failed.10051 The network cannot be reached from this host at this time.10052 Connection has timed out when SO_KEEPALIVE is set.10053 Connection is aborted due to timeout or other failure.10054 The connection is reset by remote side.连接被远程端重置10055 No buffer space is available.10056 Socket is already connected.10057 Socket is not connected.10058 Socket has been shut down.10060 The attempt to connect timed out.10061 Connection is forcefully rejected.10201 Socket already created for this object.10202 Socket has not been created for this object. 11001 Authoritative answer: Host not found.11002 Non-Authoritative answer: Host not found. 11003 Non-recoverable errors.11004 Valid name, no data record of requested type.。
Socket错误码大全
Socket错误码大全errno.00 is: Error 0errno.01 is: Not ownererrno.02 is: No such file or directoryerrno.03 is: No such processerrno.04 is: Interrupted system callerrno.05 is: I/O errorerrno.06 is: No such device or addresserrno.07 is: Arg list too longerrno.08 is: Exec format errorerrno.09 is: Bad file numbererrno.10 is: No child processeserrno.11 is: Resource temporarily unavailableerrno.12 is: Not enough spaceerrno.13 is: Permission deniederrno.14 is: Bad addresserrno.15 is: Block device requirederrno.16 is: Device busyerrno.17 is: File existserrno.18 is: Cross-device linkerrno.19 is: No such deviceerrno.20 is: Not a directoryerrno.21 is: Is a directoryerrno.22 is: Invalid argumenterrno.23 is: File table overflowerrno.24 is: Too many open fileserrno.25 is: Not a typewritererrno.26 is: Text file busyerrno.27 is: File too largeerrno.28 is: No space left on deviceerrno.29 is: Illegal seekerrno.30 is: Read-only file systemerrno.31 is: Too many linkserrno.32 is: Broken pipeerrno.33 is: Argument out of domainerrno.34 is: Result too largeerrno.35 is: No message of desired typeerrno.36 is: Identifier removederrno.37 is: Channel number out of rangeerrno.38 is: Level 2 not synchronizederrno.39 is: Level 3 haltederrno.40 is: Level 3 reseterrno.41 is: Link number out of rangeerrno.42 is: Protocol driver not attachederrno.43 is: No CSI structure availableerrno.44 is: Level 2 haltederrno.45 is: Deadlock condition if locked errno.46 is: Device not readyerrno.47 is: Write-protected mediaerrno.48 is: Unformatted or incompatible media errno.49 is: No locks availableerrno.50 is: Cannot Establish Connection errno.51 is: Connection Downerrno.52 is: Missing file or filesystemerrno.53 is: Requests blocked by Administrator errno.54 is: Operation would blockerrno.55 is: Operation now in progresserrno.56 is: Operation already in progress errno.57 is: Socket operation on non-socket errno.58 is: Destination address required errno.59 is: Message too longerrno.60 is: Protocol wrong type for socket errno.61 is: Protocol not availableerrno.62 is: Protocol not supportederrno.63 is: Socket type not supportederrno.64 is: Operation not supported on socket errno.65 is: Protocol family not supported errno.66 is: Addr family not supported by protocol errno.67 is: Address already in useerrno.68 is: Can't assign requested address errno.69 is: Network is downerrno.70 is: Network is unreachableerrno.71 is: Network dropped connection on reset errno.72 is: Software caused connection abort errno.73 is: Connection reset by peererrno.74 is: No buffer space availableerrno.75 is: Socket is already connectederrno.76 is: Socket is not connectederrno.77 is: Can't send after socket shutdown errno.78 is: Connection timed outerrno.79 is: Connection refusederrno.80 is: Host is downerrno.81 is: No route to hosterrno.82 is: Restart the system callerrno.83 is: Too many processeserrno.84 is: Too many userserrno.85 is: Too many levels of symbolic links errno.86 is: File name too longerrno.87 is: Directory not emptyerrno.88 is: Disk quota exceedederrno.89 is: Invalid file system control data detected errno.90 is: For future useerrno.91 is: For future useerrno.92 is: For future useerrno.93 is: Item is not local to hosterrno.94 is: For future useerrno.95 is: For future useerrno.96 is: For future useerrno.97 is: For future useerrno.98 is: For future useerrno.99 is: For future useerrno.100 is: For future useerrno.101 is: For future useerrno.102 is: For future useerrno.103 is: For future useerrno.104 is: For future useerrno.105 is: For future useerrno.106 is: For future useerrno.107 is: For future useerrno.108 is: For future useerrno.109 is: Function not implementederrno.110 is: Media surface errorerrno.111 is: I/O completed, but needs relocation errno.112 is: No attribute founderrno.113 is: Security Authentication Denied errno.114 is: Not a Trusted Programerrno.115 is: Too many references: can't splice errno.116 is: Invalid wide charactererrno.117 is: Asynchronous I/O cancellederrno.118 is: Out of STREAMS resourceserrno.119 is: System call timed outerrno.120 is: Next message has wrong typeerrno.121 is: Error in protocolerrno.122 is: No message on stream head read q errno.123 is: fd not associated with a stream errno.124 is: Unsupported attribute valueerrno.125 is: Multihop is not allowederrno.126 is: The server link has been severed errno.127 is: Value too large to be stored in data type打印fangshiintnPrintErrno()/*打印socket错误*/ {inti = 0;for(i = 0; i< 256; i++)printf("errno.%02d is: %s\n", i, strerror(i));return 0;}。
Socket的错误码和描述
WSANO_RECOVERY (11003) Non-recoverable query error
WSATRY_AGAIN (11002) Non-authoritative host found
Socket error 10035 - Resource temporarily unavailable // 没有可以获取的资料
Socket error 10036 - Operation now in progress // 一个阻塞操作正在进行中
Socket error 10037 - Operation already in progress // 操作正在进行中
Socket error 10047 - Address family not supported by protocol family//使用的地址族不在支持之列
Socket error 10048 - Address already in use //地址已经被使用
Socket error 10049 - Cannot assign requested address //地址设置失败
WSAHOST_NOT_FOUND (11001) Host not found
WSASYSNOTREADY (10091) Network sub-system is unavailable
WSANOTINITIALISED (10093) WSAStartup() not performed
Socket error 10041 - Protocol wrong type for socket //协议类型错误
socket常见错误代码解析
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 use Socket error 10049 - Cannot assign requested addressSocket error 10050 - Network is downSocket error 10051 - Network is unreachableSocket error 10052 - Network dropped connection on reset Socket 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 progress Socket 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 refused WSAECONNRESET (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 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這個錯誤訊息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10004—WSAEINTR函数调用中断。
该错误表明由于对WSACancelBlockingCall的调用,造成了一次调用被强行中断。
10009—WSAEBADF文件句柄错误。
该错误表明提供的文件句柄无效。
在MicrosoftWindowsCE下,socket函数可能返回这个错误,表明共享串口处于“忙”状态。
10013—WSAEACCES权限被拒。
尝试对套接字进行操作,但被禁止。
若试图在sendto或WSASendTo中使用一个广播地址,但是尚未用setsockopt和SO_BROADCAST这两个选项设置广播权限,便会产生这类错误。
10014—WSAEFAULT地址无效。
传给Winsock函数的指针地址无效。
若指定的缓冲区太小,也会产生这个错误。
10022—WSAEINV AL参数无效。
指定了一个无效参数。
例如,假如为WSAIoctl调用指定了一个无效控制代码,便会产生这个错误。
另外,它也可能表明套接字当前的状态有错,例如在一个目前没有监听的套接字上调用accept或WSAAccept。
10024—WSAEMFILE打开文件过多。
提示打开的套接字太多了。
通常,Microsoft提供者只受到系统内可用资源数量的限制。
10035—WSAEWOULDBLOCK资源暂时不可用。
对非锁定套接字来说,如果请求操作不能立即执行的话,通常会返回这个错误。
比如说,在一个非暂停套接字上调用connect,就会返回这个错误。
因为连接请求不能立即执行。
10036—WSAEINPROGRESS操作正在进行中。
当前正在执行非锁定操作。
一般来说不会出现这个错误,除非正在开发16位Winsock应用程序。
10037—WSAEALREADY操作已完成。
一般来说,在非锁定套接字上尝试已处于进程中的操作时,会产生这个错误。
比如,在一个已处于连接进程的非锁定套接字上,再一次调用connect或WSAConnect。
另外,服务提供者处于执行回调函数(针对支持回调例程的Winsock函数)的进程中时,也会出现这个错误。
10038—WSAENOTSOCK无效套接字上的套接字操作。
任何一个把SOCKET句柄当作参数的Winsock函数都会返回这个错误。
它表明提供的套接字句柄无效。
10039—WSAEDESTADDRREQ需要目标地址。
这个错误表明没有提供具体地址。
比方说,假如在调用sendto时,将目标地址设为INADDR_ANY(任意地址),便会返回这个错误。
10040—WSAEMSGSIZE消息过长。
这个错误的含义很多。
如果在一个数据报套接字上发送一条消息,这条消息对内部缓冲区而言太大的话,就会产生这个错误。
再比如,由于网络本身的限制,使一条消息过长,也会产生这个错误。
最后,如果收到数据报之后,缓冲区太小,不能接收消息时,也会产生这个错误。
10041—WSAEPROTOTYPE套接字协议类型有误。
在socket或WSASocket调用中指定的协议不支持指定的套接字类型。
比如,要求建立SOCK_STREAM类型的一个IP套接字,同时指定协议为IPPROTO_UDP,便会产生这样的错误。
10042—WSAENOPROTOOPT协议选项错误。
表明在getsockopt或setsockopt调用中,指定的套接字选项或级别不明、未获支持或者无效。
10043——WSAEPROTONOSUPPORT不支持的协议。
系统中没有安装请求的协议或没有相应的实施方案。
比如,如果系统中没有安装TCP/IP,而试着建立TCP或UDP套接字时,就会产生这个错误。
10044—WSAESOCKTNOSUPPORT不支持的套接字类型。
对指定的地址家族来说,没有相应的具体套接字类型支持。
比如,在向一个不支持原始套接字的协议请求建立一个SOCK_RAW套接字类型时,就会产生这个错误。
10045—WSAEOPNOTSUPP不支持的操作。
表明针对指定的对象,试图采取的操作未获支持。
通常,如果试着在一个不支持调用Winsock函数的套接字上调用了Winsock时,就会产生这个错误。
比如,在一个数据报套接字上调用accept或WSAAccept函数时,就会产生这样的错误。
10046—WSAEPFNOSUPPORT不支持的协议家族。
请求的协议家族不存在,或系统内尚未安装。
多数情况下,这个错误可与WSAEAFNOSUPPORT互换(两者等价);后者出现得更为频繁。
10047—WSAEAFNOSUPPORT地址家族不支持请求的操作。
对套接字类型不支持的操作来说,在试着执行它时,就会出现这个错误。
比如,在类型为SOCK_STREAM的一个套接字上调用sendto或WSASendTo函数时,就会产生这个错误。
另外,在调用socket或WSASocket函数的时候,若同时请求了一个无效的地址家族、套接字类型及协议组合,也会产生这个错误。
10048—WSAEADDRINUSE地址正在使用。
正常情况下,每个套接字只允许使用一个套接字地址(例如,一个IP套接字地址由本地IP地址及端口号组成)。
这个错误一般和bind、connect和WSAConnect这三个函数有关。
可在setsockopt函数中设置套接字选项SO_REUSEADDR,允许多个套接字访问同一个本地IP地址及端口号(详情见第9章)。
10049—WSAEADDRNOTA V AIL不能分配请求的地址。
API调用中指定的地址对那个函数来说无效时,就会产生这样的错误。
例如,若在bind调用中指定一个IP地址,但却没有对应的本地IP接口,便会产生这样的错误。
另外,通过connect、WSAConnect、sendto、WSASendTo和WSAJoinLeaf这四个函数为准备连接的远程计算机指定端口0时,也会产生这样的错误。
10050—WSAENETDOWN网络断开。
试图采取一项操作时,却发现网络连接中断。
这可能是由于网络堆栈的错误,网络接口的故障,或者本地网络的问题造成的。
10051—WSAENETUNREACH网络不可抵达。
试图采取一项操作时,却发现目标网络不可抵达(不可访问)。
这意味着本地主机不知道如何抵达一个远程主机。
换言之,目前没有已知的路由可抵达那个目标主机。
10052—WSAENETRESET网络重设时断开了连接。
由于“保持活动”操作检测到一个错误,造成网络连接的中断。
若在一个已经无效的连接之上,通过setsockopt函数设置SO_KEEPALIVE选项,也会出现这样的错误。
10053—WSAECONNABORTED软件造成连接取消。
由于软件错误,造成一个已经建立的连接被取消。
典型情况下,这意味着连接是由于协议或超时错误而被取消的。
10054—WSAECONNRESET连接被对方重设。
一个已经建立的连接被远程主机强行关闭。
若远程主机上的进程异常中止运行(由于内存冲突或硬件故障),或者针对套接字执行了一次强行关闭,便会产生这样的错误。
针对强行关闭的情况,可用SO_LINGER套接字选项和setsockopt来配置一个套接字(欲知详情,请参阅第9章)。
10055—WSAENOBUFS没有缓冲区空间。
由于系统缺少足够的缓冲区空间,请求的操作不能执行。
10056—WSAEISCONN套接字已经连接。
表明在一个已建立连接的套接字上,试图再建立一个连接。
要注意的是,数据报和数据流套接字均有可能出现这样的错误。
使用数据报套接字时,假如事先已通过connect或WSAConnect调用,为数据报通信关联了一个端点的地址,那么以后试图再次调用sendto或WSASendTo,便会产生这样的错误。
10057—WSAENOTCONN套接字尚未连接。
若在一个尚未建立连接的“面向连接”套接字上发出数据收发请求,便会产生这样的错误。
10058—WSAESHUTDOWN套接字关闭后不能发送。
表明已通过对shutdown的一次调用,部分关闭了套接字,但事后又请求进行数据的收发操作。
要注意的是,这种错误只会在已经关闭的那个数据流动方向上才会发生。
举个例子来说,完成数据发送后,若调用shutdown,那么以后任何数据发送调用都会产生这样的错误。
10060—WSAETIMEDOUT连接超时。
若发出了一个连接请求,但经过规定的时间,远程计算机仍未作出正确的响应(或根本没有任何响应),便会发生这样的错误。
要想收到这样的错误,通常需要先在套接字上设置好SO_SNDTIMEO和SO_RCVTIMEO选项,然后调用connect及WSAConnect函数。
要想了解在套接字上设置SO_SNDTIMEO和SO_RCVTIMEO选项的详情,可参考第9章。
10061—WSAECONNREFUSED连接被拒。
由于被目标机器拒绝,连接无法建立。
这通常是由于在远程机器上,没有任何应用程序可在那个地址之上,为连接提供服务。
10064—WSAEHOSTDOWN主机关闭。
这个错误指出由于目标主机关闭,造成操作失败。
然而,应用程序此时更有可能收到的是一条WSAETIMEDOUT(连接超时)错误,因为对方关机的情况通常是在试图建立一个连接的时候发生的。
10065—WSAEHOSTUNREACH没有到主机的路由。
应用程序试图访问一个不可抵达的主机。
该错误类似于WSAENETUNREACH。
10067—WSAEPROCLIM进程过多。
有些Winsock服务提供者对能够同时访问它们的进程数量进行了限制。
10091—WSASYSNOTREADY网络子系统不可用。
调用WSAStartup时,若提供者不能正常工作(由于提供服务的基层系统不可用),便会返回这种错误。
10092—WSA VERNOTSUPPORTEDWinsock.dll版本有误。
表明不支持请求的Winsock提供者版本。
10093—WSANOTINITIALISEDWinsock尚未初始化。
尚未成功完成对WSAStartup的一次调用。
10101—WSAEDISCON正在从容关闭。
这个错误是由WSARecv和WSARecvFrom返回的,指出远程主机已初始化了一次从容关闭操作。
该错误是在像A TM这样的“面向消息”协议上发生的。
10102—WSAENOMORE找不到更多的记录。
这个错误自WSALookupServiceNext函数返回,指出已经没有留下更多的记录。
这个错误通常可与WSA_E_NO_MORE互换使用。
在应用程序中,应同时检查这个错误以及WSA_E_NO_MORE。
10103—WSAECANCELLED操作被取消。
这个错误指出当WSALookupServiceNext调用仍在处理期间,发出了对WSALookupServiceEnd(服务中止)的一个调用。
此时,WSALookupServiceNext便会返回这个错误。