免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3188 | 回复: 0
打印 上一主题 下一主题

Windows Sockets错误码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-07-29 17:43 |只看该作者 |倒序浏览
Windows Sockets错误码\r\n     Windows Sockets在头文件winsock.h中定义了所有的错误码,它们包括以“WSA”打头的Windows Sockets实现返回的错误码和Berkeley Sockets定义的错误码全集。定义Berkeley Sockets错误码是为了确保原有软件的可移植性。\r\n\r\nA.1  Windows Sockets错误码列表\r\n     表A.1列出了WSAGetLastError()函数返回的可能错误码和它们的解释,它们可分为四个部分。\r\n\r\n     错误码的第一部分是用来解决在不同的C编译中对标准C错误码的不一致的定义。错误码的第二部分是标准Berkeley Sockets错误码的Windows Sockets版本。错误码的第三部分包括特定Windows Sockets扩充的错误码。错误码的第四部分由Windows Sockets的getXbyY()和WSAAsyncGetXByY()函数返回,相当于Berkeley软件中由变量h_errno返回的错误(事实上,Windows Sockets在头文件winsock.h中已将h_error定义成其值为WSAGetLastError()的一个宏),它们相当于由域名服务(Domain Name Service)返回的各种失败。如果Windows Sockets实现没有使用域名服务,它将使用最合适的代码。一般地,Windows Sockets应用程序应该将错误WSAHOST_NOT_FOUND和WSANO_DATA解释为指示关键字(名字,地址等)没有找着,而错误WSATRY_AGAIN和WSANO_RECOVERY是提醒名字服务自身是非操作的。\r\n\r\n     错误码由Windows Sockets 规范定义,在所有同一版本规范的Windows Sockets兼容实现中,它们是一致的。\r\n\r\n \r\n\r\n\r\n\r\n表A.1  Windows Sockets错误码\r\n\r\nWindows Sockets错误码\r\n Berkeley 对应错误码\r\n 错误号\r\n          解             释\r\n \r\nWSAEINTR\r\n EINTR\r\n 10004\r\n 同标准C\r\n \r\nWSAEBADF\r\n EBADF\r\n 10009\r\n 同标准C\r\n \r\nWSAEACCES\r\n EACCES\r\n 10013\r\n 同标准C\r\n \r\nWSAEFAULT\r\n EFAULT\r\n 10014\r\n 同标准C\r\n \r\nWSAEINVAL\r\n EINVAL\r\n 10022\r\n 同标准C\r\n \r\nWSAEMFILE\r\n EMFILE\r\n 10024\r\n 同标准C\r\n \r\nWSAEWOULDBLOCK\r\n EWOULDBLOCK\r\n 10035\r\n 同BSD\r\n \r\nWSAEINPROGRESS\r\n EINPROGRESS\r\n 10036\r\n 当一个阻塞函数正在进行时,调用任何Windows Sockets API函数均返回此错误\r\n \r\nWSAEALREADY\r\n EALREADY\r\n 10037\r\n 同BSD\r\n \r\nWSAENOTSOCK\r\n ENOTSOCK\r\n 10038\r\n 同BSD\r\n \r\nWSAEDESTADDRREQ\r\n EDESTADDRREQ\r\n 10039\r\n 同BSD\r\n \r\nWSAEMSGSIZE\r\n EMSGSIZE\r\n 10040\r\n 同BSD\r\n \r\nWSAEPROTOTYPE\r\n EPROTOTYPE\r\n 10041\r\n 同BSD\r\n \r\nWSAENOPROTOOPT\r\n ENOPROTOOPT\r\n 10042\r\n 同BSD\r\n \r\nWSAEPROTONOSUPPORT\r\n EPROTONOSUPPORT\r\n 10043\r\n 同BSD\r\n \r\nWSAESOCKTNOSUPPORT\r\n ESOCKTNOSUPPORT\r\n 10044\r\n 同BSD\r\n \r\nWSAEOPNOTSUPP\r\n EOPNOTSUPP\r\n 10045\r\n 同BSD\r\n \r\nWSAEPFNOSUPPORT\r\n EPFNOSUPPORT\r\n 10046\r\n 同BSD\r\n \r\nWSAEAFNOSUPPORT\r\n EAFNOSUPPORT\r\n 10047\r\n 同BSD\r\n \r\nWSAEADDRINUSE\r\n EADDRINUSE\r\n 10048\r\n 同BSD\r\n \r\nWSAEADDRNOTAVAIL\r\n EADDRNOTAVAIL\r\n 10049\r\n 同BSD\r\n \r\nWSAENETDOWN\r\n ENETDOWN\r\n 10050\r\n 同BSD。任何时候只要Windows Sockets实现检测到网络子系统失败,它就报告此错误。\r\n \r\nWSAENETUNREACH\r\n ENETUNREACH\r\n 10051\r\n 同BSD\r\n \r\nWSAENETRESET\r\n ENETRESET\r\n 10052\r\n 同BSD\r\n \r\nWSAECONNABORTED\r\n ECONNABORTED\r\n 10053\r\n 同BSD\r\n \r\nWSAECONNRESET\r\n ECONNRESET\r\n 10054\r\n 同BSD\r\n \r\nWSAENOBUFS\r\n ENOBUFS\r\n 10055\r\n 同BSD\r\n \r\nWSAEISCONN\r\n EISCONN\r\n 10056\r\n 同BSD\r\n \r\nWSAENOTCONN\r\n ENOTCONN\r\n 10057\r\n 同BSD\r\n \r\nWSAESHUTDOWN\r\n ESHUTDOWN\r\n 10058\r\n 同BSD\r\n \r\nWSAETOOMANYREFS\r\n ETOOMANYREFS\r\n 10059\r\n 同BSD\r\n \r\nWSAETIMEDOUT\r\n ETIMEDOUT\r\n 10060\r\n 同BSD\r\n \r\nWSAECONNREFUSED\r\n ECONNREFUSED\r\n 10061\r\n 同BSD\r\n \r\nWSAELOOP\r\n ELOOP\r\n 10062\r\n 同BSD\r\n \r\nWSAENAMETOOLONG\r\n ENAMETOOLONG\r\n 10063\r\n 同BSD\r\n \r\nWSAEHOSTDOWN\r\n EHOSTDOWN\r\n 10064\r\n 同BSD\r\n \r\nWSAEHOSTUNREACH\r\n EHOSTUNREACH\r\n 10065\r\n 同BSD\r\n \r\nWSASYSNOTREADY\r\n  \r\n 10091\r\n 由WSAStartup() 返回,指示网络子系统无法使用。\r\n \r\nWSAVERNOTSUPPORTED\r\n  \r\n 10092\r\n 由WSAStartup() 返回,指示Windows Sockets\r\nDLL 不能支持此应用程序。\r\n \r\nWSANOTINITIALISED\r\n  \r\n 10093\r\n 由除WSAStartup()之外的其它函数返回,指示 尚没有一次成功的WSAStartup() 调用执行过。\r\n \r\nWSAEDISCON\r\n  \r\n 10101\r\n 由WSARecv()和WSARecvFrom()返回,指示远程方已经初始化了一个“雅致”的shutdown序列。\r\n \r\nWSAHOST_NOT_FOUND\r\n HOST_NOT_FOUND\r\n 11001\r\n 同BSD\r\n \r\nWSATRY_AGAIN\r\n TRY_AGAIN\r\n 11002\r\n 同BSD\r\n \r\nWSANO_RECOVERY\r\n NO_RECOVERY\r\n 11003\r\n 同BSD\r\n \r\nWSANO_DATA\r\n NO_DATA\r\n 11004\r\n 同BSD\r\n \r\n\r\n \r\n\r\nA.2  Windows Sockets错误码扩展描述\r\n     下面给出WSAGetLastError()函数返回的可能错误码按字母顺序排列的列表,同时给出简要的扩展描述。\r\n\r\nWSAEACCES                          (10013)             Permission denied. \r\n\r\n试图使用被禁止的访问权限去访问套接字。例如,在没有使用函数setsockopt()的SO_BROADCAST命令设置广播权限的套接字上使用函数sendto()给一个广播地址发送数据。\r\n\r\n \r\n\r\nWSAEADDRINUSE                 (1004             Address already in use. \r\n\r\n正常情况下每一个套接字地址(协议/IP地址/端口号)只允许使用一次。当应用程序试图使用bind()函数将一个被已存在的或没有完全关闭的或正在关闭的套接字使用了的IP地址/端口号绑扎到一个新套接字上时,该错误发生。对于服务器应用程序来说,如果需要使用bind()函数将多个套接字绑扎到同一个端口上,可以考虑使用setsockopt()函数的SO_REUSEADDR命令。客户应用程序一般不必使用bind()函数——connect()函数总是自动选择没有使用的端口号。当bind()函数操作的是通配地址(包括ADDR_ANY)时,错误WSAEADDRINUSE可能延迟到一个明确的地址被提交时才发生。这可能在后续的函数如connect()、listen()、WSAConnect()或WSAJoinLeaf()调用时发生。\r\n\r\n \r\n\r\nWSAEADDRNOTAVAIL         (10049)             Cannot assign requested address. \r\n\r\n被请求的地址在它的环境中是不合法的。通常地在bind()函数试图将一个本地机器不合法的地址绑扎到套接字时产生。它也可能在connect()、sendto()、WSAConnect()、WSAJoinLeaf()或WSASendTo()函数调用时因远程机器的远程地址或端口号非法(如0地址或0端口号)而产生。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP