ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:29.40KB ,
资源ID:9497124      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9497124.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(windowssocket错误码及出错原因.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

windowssocket错误码及出错原因.docx

1、windowssocket错误码及出错原因windows socket错误码及出错原因编程 2009-11-01 14:33:21 阅读1890 评论0 字号:大中小订阅 本文转自Windows Sockets在头文件winsock.h中定义了所有的错误码,它们包括以“WSA”打头的Windows Sockets实现返回的错误码和Berkeley Sockets定义的错误码全集。定义Berkeley Sockets错误码是为了确保原有软件的可移植性。 A.1 Windows Sockets错误码列表 表A.1列出了WSAGetLastError()函数返回的可能错误码和它们的解释,它们可分为四

2、个部分。 错误码的第一部分是用来解决在不同的C编译中对标准C错误码的不一致的定义。错误码的第二部分是标准Berkeley Sockets错误码的Windows Sockets版本。错误码的第三部分包括特定Windows Sockets扩充的错误码。错误码的第四部分由Windows Sockets的getXbyY()和WSAAsyncGetXByY()函数返回,相当于Berkeley软件中由变量h_errno返回的错误(事实上,Windows Sockets在头文件winsock.h中已将h_error定义成其值为WSAGetLastError()的一个宏),它们相当于由域名服务(Domain

3、Name Service)返回的各种失败。如果Windows Sockets实现没有使用域名服务,它将使用最合适的代码。一般地,Windows Sockets应用程序应该将错误WSAHOST_NOT_FOUND和WSANO_DATA解释为指示关键字(名字,地址等)没有找着,而错误 WSATRY_AGAIN和WSANO_RECOVERY是提醒名字服务自身是非操作的。 错误码由Windows Sockets 规范定义,在所有同一版本规范的Windows Sockets兼容实现中,它们是一致的。表A.1 Windows Sockets错误码Windows Sockets错误码Berkeley 对应错

4、误码错误号 解 释WSAEINTREINTR10004同标准CWSAEBADFEBADF10009同标准CWSAEACCESEACCES10013同标准CWSAEFAULTEFAULT10014同标准CWSAEINVALEINVAL10022同标准CWSAEMFILEEMFILE10024同标准CWSAEWOULDBLOCKEWOULDBLOCK10035同BSDWSAEINPROGRESSEINPROGRESS10036当一个阻塞函数正在进行时,调用任何Windows Sockets API函数均返回此错误WSAEALREADYEALREADY10037同BSDWSAENOTSOCKENOT

5、SOCK10038同BSDWSAEDESTADDRREQEDESTADDRREQ10039同BSDWSAEMSGSIZEEMSGSIZE10040同BSDWSAEPROTOTYPEEPROTOTYPE10041同BSDWSAENOPROTOOPTENOPROTOOPT10042同BSDWSAEPROTONOSUPPORTEPROTONOSUPPORT10043同BSDWSAESOCKTNOSUPPORTESOCKTNOSUPPORT10044同BSDWSAEOPNOTSUPPEOPNOTSUPP10045同BSDWSAEPFNOSUPPORTEPFNOSUPPORT10046同BSDWSAEA

6、FNOSUPPORTEAFNOSUPPORT10047同BSDWSAEADDRINUSEEADDRINUSE10048同BSDWSAEADDRNOTAVAILEADDRNOTAVAIL10049同BSDWSAENETDOWNENETDOWN10050同BSD。任何时候只要Windows Sockets实现检测到网络子系统失败,它就报告此错误。WSAENETUNREACHENETUNREACH10051同BSDWSAENETRESETENETRESET10052同BSDWSAECONNABORTEDECONNABORTED10053同BSDWSAECONNRESETECONNRESET10054

7、同BSDWSAENOBUFSENOBUFS10055同BSDWSAEISCONNEISCONN10056同BSDWSAENOTCONNENOTCONN10057同BSDWSAESHUTDOWNESHUTDOWN10058同BSDWSAETOOMANYREFSETOOMANYREFS10059同BSDWSAETIMEDOUTETIMEDOUT10060同BSDWSAECONNREFUSEDECONNREFUSED10061同BSDWSAELOOPELOOP10062同BSDWSAENAMETOOLONGENAMETOOLONG10063同BSDWSAEHOSTDOWNEHOSTDOWN10064

8、同BSDWSAEHOSTUNREACHEHOSTUNREACH10065同BSDWSASYSNOTREADY10091由WSAStartup() 返回,指示网络子系统无法使用。WSAVERNOTSUPPORTED10092由WSAStartup() 返回,指示Windows SocketsDLL 不能支持此应用程序。WSANOTINITIALISED10093由除WSAStartup()之外的其它函数返回,指示 尚没有一次成功的WSAStartup() 调用执行过。WSAEDISCON10101由WSARecv()和WSARecvFrom()返回,指示远程方已经初始化了一个“雅致”的shutd

9、own序列。WSAHOST_NOT_FOUNDHOST_NOT_FOUND11001同BSDWSATRY_AGAINTRY_AGAIN11002同BSDWSANO_RECOVERYNO_RECOVERY11003同BSDWSANO_DATANO_DATA11004同BSDA.2 Windows Sockets错误码扩展描述 下面给出WSAGetLastError()函数返回的可能错误码按字母顺序排列的列表,同时给出简要的扩展描述。WSAEACCES (10013) Permission denied. 试图使用被禁止的访问权限去访问套接字。例如,在没有使用函数setsockopt()的SO_B

10、ROADCAST命令设置广播权限的套接字上使用函数sendto()给一个广播地址发送数据。WSAEADDRINUSE (10048) Address already in use. 正常情况下每一个套接字地址(协议IP地址端口号)只允许使用一次。当应用程序试图使用bind()函数将一个被已存在的或没有完全关闭的或正在关闭的套接字使用了的IP地址端口号绑扎到一个新套接字上时,该错误发生。对于服务器应用程序来说,如果需要使用bind()函数将多个套接字绑扎到同一个端口上,可以考虑使用setsockopt()函数的SO_REUSEADDR命令。客户应用程序一般不必使用bind()函数 connect

11、()函数总是自动选择没有使用的端口号。当bind()函数操作的是通配地址(包括ADDR_ANY)时,错误WSAEADDRINUSE 可能延迟到一个明确的地址被提交时才发生。这可能在后续的函数如connect()、listen()、WSAConnect()或 WSAJoinLeaf()调用时发生。WSAEADDRNOTAVAIL (10049) Cannot assign requested address. 被请求的地址在它的环境中是不合法的。通常地在bind()函数试图将一个本地机器不合法的地址绑扎到套接字时产生。它也可能在 connect()、sendto()、WSAConnect()、W

12、SAJoinLeaf()或WSASendTo()函数调用时因远程机器的远程地址或端口号非法(如0地址或0端口号)而产生。WSAEAFNOSUPPORT (10047) Address family not supported by protocol family. 使用的地址与被请求的协议不兼容。所有的套接字在创建时都与一个地址族(如IP协议对应的AF_INET)和一个通用的协议类型(如 SOCK_STREAM)联系起来。如果在socket()调用中明确地要求一个不正确的协议,或在调用sendto()等函数时使用了对套接字来说是错误的地址族的地址,该错误返回。WSAEALREADY (1003

13、7) Operation already in progress. 当在非阻塞套接字上已经有一个操作正在进行时,又有一个操作试图在其上执行则产生此错误。如:在一个正在进行连接的非阻塞套接字上第二次调用connect()函数;或取消一个已经被取消或已完成的异步请求(WSAAsyncGetXbyY())。WSAECONNABORTED (10053) Software caused connection abort. 一个已建立的连接被你的主机上的软件终止,可能是因为一次数据传输超时或是协议错误。WSAECONNREFUSED (10061) Connection refused. 因为目标主机主

14、动拒绝,连接不能建立。这通常是因为试图连接到一个远程主机上不活动的服务,如没有服务器应用程序处于执行状态。WSAECONNRESET (10054) Connection reset by peer. 存在的连接被远程主机强制关闭。通常原因为:远程主机上对等方应用程序突然停止运行,或远程主机重新启动,或远程主机在远程方套接字上使用了“ 强制”关闭(参见setsockopt(SO_LINGER))。另外,在一个或多个操作正在进行时,如果连接因“keep-alive”活动检测到一个失败而中断,也可能导致此错误。此时,正在进行的操作以错误码WSAENETRESET失败返回,后续操作将失败返回错误码W

15、SAECONNRESET。WSAEDESTADDRREQ (10039) Destination address required. 在套接字上一个操作所必须的地址被遗漏。例如,如果sendto()函数被调用且远程地址为ADDR_ANY时,此错误被返回。WSAEFAULT (10014) Bad address. 系统检测到调用试图使用的一个指针参数指向的是一个非法指针地址。如果应用程序传递一个非法的指针值,或缓冲区长度太小,此错误发生。例如,参数为结构sockaddr,但参数的长度小于sizeof(struct sockaddr)。WSAEHOSTDOWN (10064) Host is d

16、own.套接字操作因为目的主机关闭而失败返回。套接字操作遇到不活动主机。本地主机上的网络活动没有初始化。这些条件由错误码WSAETIMEDOUT指示似乎更合适。WSAEHOSTUNREACH (10065) No route to host. 试图和一个不可达主机进行套接字操作。参见WSAENETUNREACH。WSAEINPROGRESS (10036) Operation now in progress. 一个阻塞操作正在执行。Windows Sockets只允许一个任务(或线程)在同一时间可以有一个未完成的阻塞操作,如果此时调用了任何函数(不管此函数是否引用了该套接字或任何其它套接字),

17、此函数将以错误码WSAEINPROGRESS返回。WSAEINTR (10004) Interrupted function call. 阻塞操作被函数WSACancelBlockingCall ()调用所中断。WSAEINVAL (10022) Invalid argument. 提供了非法参数(例如,在使用setsockopt()函数时指定了非法的level)。在一些实例中,它也可能与套接字的当前状态相关,例如,在套接字没有使用listen()使其处于监听时调用accept()函数。WSAEISCONN (10056) Socket is already connected. 连接请求发生

18、在已经连接的套接字上。一些实现对于在已连接SOCK_DGRAM套接字上使用sendto()函数的情况也返回此错误(对于SOCK_STREAM套接字,sendto()函数的to参数被忽略),尽管其它一些实现将此操作视为合法事件。WSAEMFILE (10024) Too many open files. 打开了太多的套接字。不管是对整个系统还是每一进程或线程,Windows Sockets实现都可能有一个最大可用的套接字句柄数。WSAEMSGSIZE (10040) Message too long. 在数据报套接字上发送的一个消息大于内部消息缓冲区或一些其它网络限制,或者是用来接受数据报的缓冲

19、区小于数据报本身。WSAENETDOWN (10050) Network is down. 套接字操作遇到一个不活动的网络。此错误可能指示网络系统(例如WinSock DLL运行的协议栈)、网络接口或本地网络本身发生了一个严重的失败。WSAENETRESET (10052) Network dropped connection on reset. 在操作正在进行时连接因“keep-alive”检测到失败而中断。也可能由setsockopt()函数返回,如果试图使用它在一个已经失败的连接上设置SO_KEEPALIVE。WSAENETUNREACH (10051) Network is unrea

20、chable. 试图和一个无法到达的网络进行套接字操作。它常常意味着本地软件不知道到达远程主机的路由。WSAENOBUFS (10055) No buffer space available. 由于系统缺乏足够的缓冲区空间,或因为队列已满,在套接字上的操作无法执行。WSAENOPROTOOPT (10042) Bad protocol option. 在getsockopt()或setsockopt()调用中,指定了一个未知的、非法的或不支持的选项或层(level)。WSAENOTCONN (10057) Socket is not connected. 因为套接字没有连接,发送或接收数据的请

21、求不被允许,或者是使用sendto()函数在数据报套接字上发送时没有提供地址。任何其它类型的操作也可以返回此错误,例如,使用setsockopt()函数在一个已重置的连接上设置SO_KEEPALIVE。WSAENOTSOCK (10038) Socket operation on non-socket.操作试图不是在套接字上进行。它可能是套接字句柄参数没有引用到一个合法套接字,或者是调用select()函数时,一个fd_set中的成员不合法。WSAEOPNOTSUPP (10045) Operation not supported. 对于引用的对象的类型来说,试图进行的操作不支持。通常它发生在

22、套接字不支持此操作的套接字描述符上,例如,试图在数据报套接字上接收连接。WSAEPFNOSUPPORT (10046) Protocol family not supported. 协议簇没有在系统中配置或没有支持它的实现存在。它与WSAEAFNOSUPPORT有些微的不同,但在绝大多数情况下是可互换的,返回这两个错误的所有Windows Sockets函数的说明见WSAEAFNOSUPPORT的描述。WSAEPROCLIM (10067) Too many processes.Windows Sockets实现可能限制同时使用它的应用程序的数量,如果达到此限制,WSAStartup()函数可

23、能因此错误失败。WSAEPROTONOSUPPORT (10043) Protocol not supported. 请求的协议没有在系统中配置或没有支持它的实现存在。例如,socket()调用请求一个SOCK_DGRAM套接字,但指定的是流协议。WSAEPROTOTYPE (10041) Protocol wrong type for socket. 在socket()函数调用中指定的协议不支持请求的套接字类型的语义。例如,ARPA Internet UDP协议不能和SOCK_STREAM套接字类型一同指定。WSAESHUTDOWN (10058) Cannot send after soc

24、ket shutdown. 因为套接字在相应方向上已经被先前的shutdown()调用关闭,因此该方向上的发送或接收请求不被允许。通过调用shutdown()函数来请求对套接字的部分关闭,它发送一个信号来停止发送或接收或双向操作。WSAESOCKTNOSUPPORT (10044) Socket type not supported. 不支持在此地址族中指定的套接字类型。例如,socket()调用中选择了可选的套接字类型SOCK_RAW,但是实现却根本不支持SOCK_RAW类型的套接字。WSAETIMEDOUT (10060) Connection timed out. 连接请求因被连接方在一

25、个时间周期内不能正确响应而失败,或已经建立的连接因被连接的主机不能响应而失败。WSATYPE_NOT_FOUND (10109) Class type not found 指定的类没有找到。WSAEWOULDBLOCK (10035) Resource temporarily unavailable. 此错误由在非阻塞套接字上不能立即完成的操作返回,例如,当套接字上没有排队数据可读时调用了recv()函数。此错误不是严重错误,相应操作应该稍后重试。对于在非阻塞SOCK_STREAM套接字上调用connect()函数来说,报告WSAEWOULDBLOCK是正常的,因为建立一个连接必须花费一些时间

26、。WSAHOST_NOT_FOUND (11001) Host not found.主机未知。此名字不是一个正式主机名,也不是一个别名,它不能在查询的数据库中找到。此错误也可能在协议和服务查询中返回,它意味着指定的名字不能在相关数据库中找到。WSA_INVALID_HANDLE (OS dependent) Specified event object handle is invalid.应用程序试图使用一个事件对象,但指定的句柄非法。WSA_INVALID_PARAMETER (OS dependent) One or more parameters are invalid.应用程序使用了一

27、个直接映射到Win32函数的WinSock函数,而Win32函数指示一个或多个参数有问题。WSAINVALIDPROCTABLE (OS dependent) Invalid procedure table from service provider.服务提供者返回了一个假的WS2_32.DLL程序(procedure)表。这通常是由一个或多个函数指针为空引起。WSAINVALIDPROVIDER (OS dependent) Invalid service provider version number. 服务提供者返回一个不同于2.2的版本号。WSA_IO_INCOMPLETE (OS dependent) Overlapped I/O event object not in signa

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1