Socket编程协议错误代码解析

上传人:平*** 文档编号:12461193 上传时间:2017-10-19 格式:DOC 页数:6 大小:45.50KB
返回 下载 相关 举报
Socket编程协议错误代码解析_第1页
第1页 / 共6页
Socket编程协议错误代码解析_第2页
第2页 / 共6页
Socket编程协议错误代码解析_第3页
第3页 / 共6页
Socket编程协议错误代码解析_第4页
第4页 / 共6页
Socket编程协议错误代码解析_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《Socket编程协议错误代码解析》由会员分享,可在线阅读,更多相关《Socket编程协议错误代码解析(6页珍藏版)》请在金锄头文库上搜索。

1、10004WSAEINTR函数调用中断。该错误表明由于对 WSACancelBlockingCall 的调用,造成了一次调用被强行中断。10009WSAEBADF文件句柄错误。该错误表明提供的文件句柄无效。在 MicrosoftWindowsCE 下,socket 函数可能返回这个错误,表明共享串口处于“忙”状态。10013WSAEACCES权限被拒。尝试对套接字进行操作,但被禁止。若试图在 sendto 或 WSASendTo 中使用一个广播地址,但是尚未用 setsockopt 和 SO_BROADCAST 这两个选项设置广播权限,便会产生这类错误。10014WSAEFAULT地址无效。传

2、给 Winsock 函数的指针地址无效。若指定的缓冲区太小,也会产生这个错误。10022WSAEINVAL参数无效。指定了一个无效参数。例如,假如为 WSAIoctl 调用指定了一个无效控制代码,便会产生这个错误。另外,它也可能表明套接字当前的状态有错,例如在一个目前没有监听的套接字上调用 accept 或 WSAAccept。10024WSAEMFILE打开文件过多。提示打开的套接字太多了。通常,Microsoft 提供者只受到系统内可用资源数量的限制。10035WSAEWOULDBLOCK资源暂时不可用。对非锁定套接字来说,如果请求操作不能立即执行的话,通常会返回这个错误。比如说,在一个非

3、暂停套接字上调用 connect,就会返回这个错误。因为连接请求不能立即执行。10036WSAEINPROGRESS操作正在进行中。当前正在执行非锁定操作。一般来说不会出现这个错误,除非正在开发16 位 Winsock 应用程序。10037WSAEALREADY操作已完成。一般来说,在非锁定套接字上尝试已处于进程中的操作时,会产生这个错误。比如,在一个已处于连接进程的非锁定套接字上,再一次调用 connect 或 WSAConnect。另外,服务提供者处于执行回调函数(针对支持回调例程的 Winsock 函数)的进程中时,也会出现这个错误。10038WSAENOTSOCK无效套接字上的套接字操

4、作。任何一个把 SOCKET 句柄当作参数的 Winsock 函数都会返回这个错误。它表明提供的套接字句柄无效。10039WSAEDESTADDRREQ需要目标地址。这个错误表明没有提供具体地址。比方说,假如在调用 sendto 时,将目标地址设为 INADDR_ANY(任意地址) ,便会返回这个错误。10040WSAEMSGSIZE消息过长。这个错误的含义很多。如果在一个数据报套接字上发送一条消息,这条消息对内部缓冲区而言太大的话,就会产生这个错误。再比如,由于网络本身的限制,使一条消息过长,也会产生这个错误。最后,如果收到数据报之后,缓冲区太小,不能接收消息时,也会产生这个错误。10041

5、WSAEPROTOTYPE套接字协议类型有误。在 socket 或 WSASocket 调用中指定的协议不支持指定的套接字类型。比如,要求建立 SOCK_STREAM 类型的一个 IP 套接字,同时指定协议为IPPROTO_UDP,便会产生这样的错误。10042WSAENOPROTOOPT协议选项错误。表明在 getsockopt 或 setsockopt 调用中,指定的套接字选项或级别不明、未获支持或者无效。10043WSAEPROTONOSUPPORT不支持的协议。系统中没有安装请求的协议或没有相应的实施方案。比如,如果系统中没有安装 TCP/IP,而试着建立 TCP 或 UDP 套接字时

6、,就会产生这个错误。10044WSAESOCKTNOSUPPORT不支持的套接字类型。对指定的地址家族来说,没有相应的具体套接字类型支持。比如,在向一个不支持原始套接字的协议请求建立一个 SOCK_RAW 套接字类型时,就会产生这个错误。10045WSAEOPNOTSUPP不支持的操作。表明针对指定的对象,试图采取的操作未获支持。通常,如果试着在一个不支持调用 Winsock 函数的套接字上调用了 Winsock 时,就会产生这个错误。比如,在一个数据报套接字上调用 accept 或 WSAAccept 函数时,就会产生这样的错误。10046WSAEPFNOSUPPORT不支持的协议家族。请求

7、的协议家族不存在,或系统内尚未安装。多数情况下,这个错误可与 WSAEAFNOSUPPORT 互换(两者等价) ;后者出现得更为频繁。10047WSAEAFNOSUPPORT地址家族不支持请求的操作。对套接字类型不支持的操作来说,在试着执行它时,就会出现这个错误。比如,在类型为 SOCK_STREAM 的一个套接字上调用 sendto 或 WSASendTo函数时,就会产生这个错误。另外,在调用 socket 或 WSASocket 函数的时候,若同时请求了一个无效的地址家族、套接字类型及协议组合,也会产生这个错误。10048WSAEADDRINUSE地址正在使用。正常情况下,每个套接字只允许

8、使用一个套接字地址(例如,一个 IP 套接字地址由本地 IP 地址及端口号组成) 。这个错误一般和 bind、connect 和 WSAConnect 这三个函数有关。可在 setsockopt 函数中设置套接字选项 SO_REUSEADDR,允许多个套接字访问同一个本地 IP 地址及端口号(详情见第 9 章) 。10049WSAEADDRNOTAVAIL不能分配请求的地址。API 调用中指定的地址对那个函数来说无效时,就会产生这样的错误。例如,若在 bind 调用中指定一个 IP 地址,但却没有对应的本地 IP 接口,便会产生这样的错误。另外,通过 connect、WSAConnect、se

9、ndto、WSASendTo 和 WSAJoinLeaf 这四个函数为准备连接的远程计算机指定端口 0 时,也会产生这样的错误。10050WSAENETDOWN网络断开。试图采取一项操作时,却发现网络连接中断。这可能是由于网络堆栈的错误,网络接口的故障,或者本地网络的问题造成的。10051WSAENETUNREACH网络不可抵达。试图采取一项操作时,却发现目标网络不可抵达(不可访问) 。这意味着本地主机不知道如何抵达一个远程主机。换言之,目前没有已知的路由可抵达那个目标主机。10052WSAENETRESET网络重设时断开了连接。由于“保持活动”操作检测到一个错误,造成网络连接的中断。若在一个

10、已经无效的连接之上,通过 setsockopt 函数设置 SO_KEEPALIVE 选项,也会出现这样的错误。10053WSAECONNABORTED软件造成连接取消。由于软件错误,造成一个已经建立的连接被取消。典型情况下,这意味着连接是由于协议或超时错误而被取消的。10054WSAECONNRESET连接被对方重设。一个已经建立的连接被远程主机强行关闭。若远程主机上的进程异常中止运行(由于内存冲突或硬件故障) ,或者针对套接字执行了一次强行关闭,便会产生这样的错误。针对强行关闭的情况,可用 SO_LINGER 套接字选项和 setsockopt 来配置一个套接字(欲知详情,请参阅第 9 章)

11、 。10055WSAENOBUFS没有缓冲区空间。由于系统缺少足够的缓冲区空间,请求的操作不能执行。10056WSAEISCONN套接字已经连接。表明在一个已建立连接的套接字上,试图再建立一个连接。要注意的是,数据报和数据流套接字均有可能出现这样的错误。使用数据报套接字时,假如事先已通过connect 或 WSAConnect 调用,为数据报通信关联了一个端点的地址,那么以后试图再次调用 sendto 或 WSASendTo,便会产生这样的错误。10057WSAENOTCONN套接字尚未连接。若在一个尚未建立连接的“面向连接”套接字上发出数据收发请求,便会产生这样的错误。10058WSAESH

12、UTDOWN套接字关闭后不能发送。表明已通过对 shutdown 的一次调用,部分关闭了套接字,但事后又请求进行数据的收发操作。要注意的是,这种错误只会在已经关闭的那个数据流动方向上才会发生。举个例子来说,完成数据发送后,若调用 shutdown,那么以后任何数据发送调用都会产生这样的错误。10060WSAETIMEDOUT连接超时。若发出了一个连接请求,但经过规定的时间,远程计算机仍未作出正确的响应(或根本没有任何响应) ,便会发生这样的错误。要想收到这样的错误,通常需要先在套接字上设置好 SO_SNDTIMEO 和 SO_RCVTIMEO 选项,然后调用 connect 及 WSAConn

13、ect函数。要想了解在套接字上设置 SO_SNDTIMEO 和 SO_RCVTIMEO 选项的详情,可参考第 9 章。10061WSAECONNREFUSED连接被拒。由于被目标机器拒绝,连接无法建立。这通常是由于在远程机器上,没有任何应用程序可在那个地址之上,为连接提供服务。10064WSAEHOSTDOWN主机关闭。这个错误指出由于目标主机关闭,造成操作失败。然而,应用程序此时更有可能收到的是一条 WSAETIMEDOUT(连接超时)错误,因为对方关机的情况通常是在试图建立一个连接的时候发生的。10065WSAEHOSTUNREACH没有到主机的路由。应用程序试图访问一个不可抵达的主机。该

14、错误类似于WSAENETUNREACH。10067WSAEPROCLIM进程过多。有些 Winsock 服务提供者对能够同时访问它们的进程数量进行了限制。10091WSASYSNOTREADY网络子系统不可用。调用 WSAStartup 时,若提供者不能正常工作(由于提供服务的基层系统不可用) ,便会返回这种错误。10092WSAVERNOTSUPPORTEDWinsock.dll 版本有误。表明不支持请求的 Winsock 提供者版本。10093WSANOTINITIALISEDWinsock 尚未初始化。尚未成功完成对 WSAStartup 的一次调用。10101WSAEDISCON正在从

15、容关闭。这个错误是由 WSARecv 和 WSARecvFrom 返回的,指出远程主机已初始化了一次从容关闭操作。该错误是在像 ATM 这样的“面向消息”协议上发生的。10102WSAENOMORE找不到更多的记录。这个错误自 WSALookupServiceNext 函数返回,指出已经没有留下更多的记录。这个错误通常可与 WSA_E_NO_MORE 互换使用。在应用程序中,应同时检查这个错误以及 WSA_E_NO_MORE。10103WSAECANCELLED操作被取消。这个错误指出当 WSALookupServiceNext 调用仍在处理期间,发出了对WSALookupServiceEnd

16、(服务中止)的一个调用。此时,WSALookupServiceNext 便会返回这个错误。这个错误代码可与 WSA_E_CANCELLED 互换使用。作为应用程序,应同时检查这个错误以及 WSA_E_CANCELLED。10104WSAEINVALIDPROCTABLE进程调用表无效。该错误通常是在进程表包含了无效条目的情况下,由一个服务提供者返回的。欲知服务提供者的详情,可参考第 14 章。10105WSAEINVALIDPROVIDER无效的服务提供者。这个错误同服务提供者关联在一起,在提供者不能建立正确的Winsock 版本,从而无法正常工作的前提下产生。10106WSAEPROVIDERFAILEDINIT提供者初始化失败。这个错误同服务提供者关联在一起,通常见于提供者不能载入需要的DLL 时。10107WSASYSCALLFAILURE系统调用失败。表明绝对不应失败的一个系统调用却令人遗憾地失败了。10108WSASERVICE_NOT_FOUND找不到

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号