Windows Sockets错误标识及对应解释
生活随笔
收集整理的這篇文章主要介紹了
Windows Sockets错误标识及对应解释
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
WSAETIMEDOUT 對應(yīng) linux 的 ETIMEDOUT
值對于所有的Windows Sockets兼容實現(xiàn)都是一致的。
本文參考來源:
WSAETIMEDOUT 對應(yīng) linux 的 ETIMEDOUT
?
IdWinsock2.pas 文件中也有說明.
?
Windows Sockets錯誤代碼??
2010-08-03 17:23:29下面以表格的形式列出了WSAGetLastError()函數(shù)有可能返回的錯誤代碼和對應(yīng)的解釋。錯誤代碼的數(shù)值對于所有的Windows Sockets兼容實現(xiàn)都是一致的。?
| 錯誤代碼 | Berkeley對應(yīng)代碼 | 錯誤數(shù)值 | 說明 |
| WSAEINTR | EINT | 10004 | 函數(shù)調(diào)用中斷。該錯誤表明由于對WSACancelBlockingCall的調(diào)用,造成了一次調(diào)用被強行中斷。 |
| WSAEBADF | EBADF | 10009 | 文件句柄錯誤。該錯誤表明提供的文件句柄無效。 |
| WSAEACCES | EACCES | 10013 | 權(quán)限被拒。嘗試對套接字進行操作,但被禁止。若試圖在sendto或WSASendTo中使用一個廣播地址,但是尚未用setsockopt和SO_BROADCAST這兩個選項設(shè)置廣播權(quán)限,便會產(chǎn)生這類錯誤。 |
| WSAEFAULT | EFAULT | 10014 | 地址無效。傳給Winsock函數(shù)的指針地址無效。若指定的緩沖區(qū)太小,也會產(chǎn)生這個錯誤。 |
| WSAEINVAL | EINVAL | 10022 | 參數(shù)無效。指定了一個無效參數(shù)。例如,假如為WSAIoctl調(diào)用指定了一個無效控制代碼,便會產(chǎn)生這個錯誤。另外,它也可能表明套接字當(dāng)前的狀態(tài)有錯,例如在一個目前沒有監(jiān)聽的套接字上調(diào)用accept或WSAAccept。 |
| WSAEMFILE BLOCK | EMFILE BLOCK | 10024 | 打開文件過多。提示打開的套接字太多了。通常,Microsoft提供者只受到系統(tǒng)內(nèi)可用資源數(shù)量的限制。 |
| WSAEINPRO | EINPRO | 10036 | 資源暫時不可用。對非鎖定套接字來說,如果請求操作不能立即執(zhí)行的話,通常會返回這個錯誤。比如說,在一個非暫停套接字上調(diào)用conn ect,就會返回這個錯誤。因為連接請求不能立即執(zhí)行。 |
| GRESS | GRESS | ? | ???操作正在進行中。當(dāng)前正在執(zhí)行非鎖定操作。一般來說不會出現(xiàn)這個錯誤,除非正在開 發(fā)1 6?位Wi n s o c k?應(yīng)用程序。 |
| WSAEALREADY | EALREADY? | 10037 | 操作已完成。一般來說,在非鎖定套接字上嘗試已處于進程中的操作時,會產(chǎn)生這個錯誤。比如,在一個已處于連接進程的非鎖定套接字上,再一次調(diào)用connect或WSAConnect。另外,服務(wù)提供者處于執(zhí)行回調(diào)函數(shù)(針對支持回調(diào)例程的Winsock函數(shù))的進程中時,也會出現(xiàn)這個錯誤。 |
| WSAENOTSOCK | ENOTSOCK | 10038 | 無效套接字上的套接字操作。任何一個把SOCKET句柄當(dāng)作參數(shù)的Winsock函數(shù)都會返回這個錯誤。它表明提供的套接字句柄無效。 |
?
???續(xù)表
| 錯誤代碼 | Berkeley對應(yīng)代碼 | 錯誤數(shù)值 | 說明 |
| WSAEDESTADDR REQ | EDESTADDR REQ | 10039 | 需要目標地址。這個錯誤表明沒有提供具體地址。比方說,假如在調(diào)用sendto時,將目標地址設(shè)為INADDR_ANY(任意地址),便會返回這個錯誤。 |
| WSAEMSGSIZE | EMSGSIZE | 10040 | 消息過長。這個錯誤的含義很多。如果在一個數(shù)據(jù)報套接字上發(fā)送一條消息,這條消息對內(nèi)部緩沖區(qū)而言太大的話,就會產(chǎn)生這個錯誤。再比如,由于網(wǎng)絡(luò)本身的限制,使一條消息過長,也會產(chǎn)生這個錯誤。最后,如果收到數(shù)據(jù)報之后,緩沖區(qū)太小,不能接收消息時,也會產(chǎn)生這個錯誤。 |
| WSAEPROTOTYPE | EPROTOTYPE | 10041 | 套接字協(xié)議類型有誤。在socket或WSASocket?調(diào)用中指定的協(xié)議不支持指定的套接字類型。比如,要求建立SOCK_STREAM類型的一個IP套接字,同時指定協(xié)議為IPPROTO_UDP,便會產(chǎn)生這樣的錯誤。 |
| WSAENOPROTO OPT | ENOPROTOOPT | 10042 | 協(xié)議選項錯誤。表明在getsockopt或setsockopt?調(diào)用中,指定的套接字選項或級別不明、未獲支持或者無效。 |
| WSAEPROTONOUPPORT | EPROTONO SUPPORT | 10043 | 不支持的協(xié)議。系統(tǒng)中沒有安裝請求的協(xié)議或沒有相應(yīng)的實施方案。比如,如果系統(tǒng)中沒有安裝TCP/IP,而試著建立TCP或UDP套接字時,就會產(chǎn)生這個錯誤。 |
| WSAESOCKTNO SUPPORT | ESOCKTNO SUPPORT | 10044 | 不支持的套接字類型。對指定的地址家族來說,沒有相應(yīng)的具體套接字類型支持。比如,在向一個不支持原始套接字的協(xié)議請求建立一個SOCK_RAW套接字類型時,就會產(chǎn)生這個錯誤。 |
| WSAEOPNOTSUPPORT | EOPNOT SUPPORT | 10045 | 不支持的操作。表明針對指定的對象,試圖采取的操作未獲支持。通常,如果試著在一個不支持調(diào)用Winsock函數(shù)的套接字上調(diào)用了Winsock時,就會產(chǎn)生這個錯誤。 |
| WSAEPFNOSUPPORT | EPFNO SUPPORT | 10046 | 不支持的協(xié)議家族。請求的協(xié)議家族不存在,或系統(tǒng)內(nèi)尚未安裝。多數(shù)情況下,這個錯誤可與WSAEAFNOSUPPORT互換(兩者等價);后者出現(xiàn)得更為頻繁。 |
| WSAEAFNOSUPPORT | EAFNO SUPPORT | 10047 | 地址家族不支持請求的操作。對套接字類型不支持的操作來說,在試著執(zhí)行它時,就會出現(xiàn)這個錯誤。比如,在類型為SOCK_STREAM的一個套接字上調(diào)用sendto或WSASendTo函數(shù)時,就會產(chǎn)生這個錯誤。另外,在調(diào)用socket或WSASocket函數(shù)的時候,若同時請求了一個無效的地址家族、套接字類型及協(xié)議組合,也會產(chǎn)生這個錯誤。 |
?
???續(xù)表
| 錯誤代碼 | Berkeley對應(yīng)代碼 | 錯誤數(shù)值 | 說明 |
| WSAEADDRINUSE | EADDRINUSE | 10048 | 地址正在使用。正常情況下,每個套接字只允許使用一個套接字地址這個錯誤一般和bind、connect和WSAConnect這三個函數(shù)有關(guān)。可在setsockopt函數(shù)中設(shè)置套接字選項SO_REUSEA D D R?,允許多個套接字訪問同一個本地I P?地址及端口號 |
| WSAEADDRNOT AVAIL | EADDRNOT AVAIL | 10049 | 不能分配請求的地址。API調(diào)用中指定的地址對那個函數(shù)來說無效時,就會產(chǎn)生這樣的錯誤。例如,若在bind調(diào)用中指定一個IP地址,但卻沒有對應(yīng)的本地IP接口,便會產(chǎn)生這樣的錯誤。另外,通過connect、WSAConnect、sendto、WSASendTo和WSAJoinLeaf這四個函數(shù)為準備連接的遠程計算機指定端口0時,也會產(chǎn)生這樣的錯誤。 |
| WSAENETDOWN | ENETDOWN | 10050 | 網(wǎng)絡(luò)斷開。試圖采取一項操作時,卻發(fā)現(xiàn)網(wǎng)絡(luò)連接中斷。這可能是由于網(wǎng)絡(luò)堆棧的錯誤,網(wǎng)絡(luò)接口的故障,或者本地網(wǎng)絡(luò)的問題造成的。 |
| WSAENETUNREACH | ENETUNREAC H | 10051 | 網(wǎng)絡(luò)不可抵達。試圖采取一項操作時,卻發(fā)現(xiàn)目標網(wǎng)絡(luò)不可抵達(不可訪問)。這意味著本地主機不知道如何抵達一個遠程主機。換言之,目前沒有已知的路由可抵達那個目標主機。 |
| WSAENETRESET | ENETRESET | 10052 | 網(wǎng)絡(luò)重設(shè)時斷開了連接。由于“保持活動”操作檢測到一個錯誤,造成網(wǎng)絡(luò)連接的中斷。若在一個已經(jīng)無效的連接之上,通過setsockopt函數(shù)設(shè)置SO_KEEPALIVE選項,也會出現(xiàn)這樣的錯誤。 |
| WSAECONNABORT ED | ECONNABORTED | 10053 | 軟件造成連接取消。由于軟件錯誤,造成一個已經(jīng)建立的連接被取消。典型情況下,這意味著連接是由于協(xié)議或超時錯誤而被取消的。 |
| WSAECONNRESET | ECONNRESET?? | 10054 | 連接被對方重設(shè)。一個已經(jīng)建立的連接被遠程主機強行關(guān)閉。若遠程主機上的進程異常中止運行(由于內(nèi)存沖突或硬件故障),或者針對套接字執(zhí)行了一次強行關(guān)閉,便會產(chǎn)生這樣的錯誤。針對強行關(guān)閉的情況,可用SO_LINGER套接字選項和setsockopt來配置一個套接字 |
| WSAENOBUFS | ENOBUFS | 10055 | 沒有緩沖區(qū)空間。由于系統(tǒng)缺少足夠的緩沖區(qū)空間,請求的操作不能執(zhí)行。 |
| WSAEISCONN | EISCONN | 10056 | 套接字已經(jīng)連接。表明在一個已建立連接的套接字上,試圖再建立一個連接。要注意的是,數(shù)據(jù)報和數(shù)據(jù)流套接字均有可能出現(xiàn)這樣的錯誤。使用數(shù)據(jù)報套接字時,假如事先已通過connect或WSAConnect調(diào)用,為數(shù)據(jù)報通信關(guān)聯(lián)了一個端點的地址,那么以后試圖再次調(diào)用sendto或WSASendTo,便會產(chǎn)生這樣的錯誤。 |
| WSAENOTCONN | ENOTCONN | 10057 | 套接字尚未連接。若在一個尚未建立連接的“面向連接”套接字上發(fā)出數(shù)據(jù)收發(fā)請求,便會產(chǎn)生這樣的錯誤。 |
?
???續(xù)表
| 錯誤代碼 | Berkeley對應(yīng)代碼 | 錯誤數(shù)值 | 說明 |
| WSAESHUTDOWN | ESHUTDOWN | 10058 | 套接字關(guān)閉后不能發(fā)送。表明已通過對shutdown的一次調(diào)用,部分關(guān)閉了套接字,但后又請求進行數(shù)據(jù)的收發(fā)操作。要注意的是,這種錯誤只會在已經(jīng)關(guān)閉的那個數(shù)據(jù)流動方向上才會發(fā)生。舉個例子來說,完成數(shù)據(jù)發(fā)送后,若調(diào)用shutdown,那么以后任何數(shù)據(jù)發(fā)送調(diào)用都會產(chǎn)生這樣的錯誤。 |
| WSAETIMEDOUT | ETIMEDOUT | 10060 | 連接超時。若發(fā)出了一個連接請求,但經(jīng)過規(guī)定的時間,遠程計算機仍未作出正確的響應(yīng)(或根本沒有任何響應(yīng)),便會發(fā)生這樣的錯誤。要想收到這樣的錯誤,通常需要先在套接字上設(shè)置好SO_SNDTIMEO和SO_RCVTIMEO選項,然后調(diào)用connect及WSAConnect函數(shù)。 |
| WSAECONNREFUS ED | ECONNREFUSED | 10061 | 連接被拒。由于被目標機器拒絕,連接無法建立。這通常是由于在遠程機器上,沒有任何應(yīng)用程序可在那個地址之上,為連接提供服務(wù)。 |
| WSAEHOSTDOWN | EHOSTDOWN | 10064 | 主機關(guān)閉。這個錯誤指出由于目標主機關(guān)閉,造成操作失敗。然而,應(yīng)用程序此時更有可能收到的是一條WSAETIMEDOUT(連接超時)錯誤,因為對方關(guān)機的情況通常是在試圖建立一個連接的時候發(fā)生的。 |
| WSAEHOSTUNREA CH | EHOSTUNREACH | 10065 | 沒有到主機的路由。應(yīng)用程序試圖訪問一個不可抵達的主機。該錯誤類似于WSAENETUNREACH。 |
| WSASYSNOTREA Y | ? | 10091 | 網(wǎng)絡(luò)子系統(tǒng)不可用。調(diào)用WSAStartup時,若提供者不能正常工作(由于提供服務(wù)的基層系統(tǒng)不可用),便會返回這種錯誤。 |
| WSAVERNOTSUPP ORTED | ? | 10092 | Winsock. dll版本有誤。表明不支持請求的Winsock提供者版本。 |
| WSANOTINITIAL ISED | ? | 10093 | Winsock尚未初始化。尚未成功完成對WSAStartup的一次調(diào)用。 |
| ?Windows Sockets 代碼 | ?Berkele y對應(yīng)代碼 | ?錯誤數(shù)值 | ?解釋 |
| ?WSAEINTR | ?EINTR | ?10004 | ?與標準C一致 |
| ?WSAEBADF | ?EBADF | ?10009 | ?與標準C一致 |
| ?WSAEACCES | ?EACCES | ?10013 | ?與標準C一致 |
| ?WSAEFAULT | ?EFAULT | ?10014 | ?與標準C一致 |
| ?WSAEINVAL | ?EINVAL | ?10022 | ?與標準C一致 |
| ?WSAEMFILE | ?EMFILE | ?10024 | ?與標準C一致 |
| ?WSAEWOULD BLOCK | ?EWOULD BLOCK | ?10035 | ?與BSD一致 |
| ?WSAEINPRO GRESS | ?EINPRO GRESS | ?10036 | ?當(dāng)應(yīng)用程序調(diào)用Windows Sockets API函數(shù)時,如果一個阻塞函數(shù)正在運行,將返回該錯誤。 |
| ?WSAEALREADY | ?EALREADY | ?10037 | ?與BSD一致 |
| ?WSAENOTSOCK | ?ENOTSOCK | ?10038 | ?與BSD一致 |
| ?WSAEDESTADDR REQ | ?EDESTADDR REQ | ?10039 | ?與BSD一致 |
| ?WSAEMSGSIZE | ?EMSGSIZE | ?10040 | ?與BSD一致 |
| ?WSAEPROTOTYPE | ?EPROTOTYPE | ?10041 | ?與BSD一致 |
| ?WSAENOPROTO OPT | ?ENOPROTOOPT | ?10042 | ?與BSD一致 |
| ?WSAEPROTONO SUPPORT | ?EPROTONO SUPPORT | ?10043 | ?與BSD一致 |
| ?WSAESOCKTNO SUPPORT | ?ESOCKTNO SUPPORT | ?10044 | ?與BSD一致 |
| ?WSAEOPNOT SUPPORT | ?EOPNOT SUPPORT | ?10045 | ?與BSD一致 |
| ?WSAEPFNO SUPPORT | ?EPFNO SUPPORT | ?10046 | ?與BSD一致 |
| ?WSAEAFNO SUPPORT | ?EAFNO SUPPORT | ?10047 | ?與BSD一致 |
| ?WSAEADDRINUSE | ?EADDRINUSE | ?10048 | ?與BSD一致 |
| ?WSAEADDRNOT AVAIL | ?EADDRNOT AVAIL | ?10049 | ?與BSD一致 |
| ?WSAENETDOWN | ?ENETDOWN | ?10050 | ?與BSD一致, 在Windows Sockets檢測到任何底層的失敗時,都有可能返回該錯誤。 |
| ?WSAENETUNREACH | ?ENETUNREACH | ?10051 | ?與BSD一致 |
| ?WSAENETRESET | ?ENETRESET | ?10052 | ?與BSD一致 |
| ?WSAECONNABORTED | ?ECONNABORTED | ?10053 | ?與BSD一致 |
| ?WSAECONNRESET | ?ECONNRESET | ?10054 | ?與BSD一致 |
| ?WSAENOBUFS | ?ENOBUFS | ?10055 | ?與BSD一致 |
| ?WSAEISCONN | ?EISCONN | ?10056 | ?與BSD一致 |
| ?WSAENOTCONN | ?ENOTCONN | ?10057 | ?與BSD一致 |
| ?WSAESHUTDOWN | ?ESHUTDOWN | ?10058 | ?與BSD一致 |
| ?WSAETOOMANYREFS | ?ETOOMANYREFS | ?10059 | ?與BSD一致 |
| ?WSAETIMEDOUT | ?ETIMEDOUT | ?10060 | ?與BSD一致 |
| ?WSAECONNREFUSED | ECONNREFUSED | ?10061 | 與BSD一致 |
| ?WSAELOOP | ?ELOOP | ?10062 | ?與BSD一致 |
| ?WSAENAMETOOLONG | ?ENAMETOOLONG | ?10063 | ?與BSD一致 |
| ?WSAEHOSTDOWN | ?EHOSTDOWN | ?10064 | ?與BSD一致 |
| ?WSAEHOSTUNREACH | ?EHOSTUNREACH | ?10065 | ?與BSD一致 |
| ?WSASYSNOTREAD | ? | ?10091 | ?由WSAStartup()函數(shù)返回,表明底層的網(wǎng)絡(luò)子系統(tǒng)無法使用。 |
| ?WSAVERNOTSUPPORTED | ? | ?10092 | ?由WSAStartup()函數(shù)返回,表明Windows Sockets DLL不支持這一應(yīng)用。 |
| ?WSANOTINITIALISED | ? | ?10093 | ?由除了WSAStartup()的其他函數(shù)返回,表明沒有對WSAStartup()函數(shù)的成功調(diào)用。 |
| ?WSAHOST_NOT_FOUND | ?HOST_NOT_FOUND | ?11001 | ?與BSD一致 |
| ?WSATRY_AGAIN | ?TRY_AGAIN | ?11001 | ?與BSD一致 |
| ?WSANO_RECOVERY | ?NO_RECOVERY | ?11003 | ?與BSD一致 |
| ?WSANO_DATA | ?NO_DATA | ?11004 | ?與BSD一致 |
1,http://blog.163.com/aragorn_1024/blog/static/12606592720107352329908/
2,http://www.cnblogs.com/-clq/archive/2012/06/14/2549195.html?
總結(jié)
以上是生活随笔為你收集整理的Windows Sockets错误标识及对应解释的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: memcached全面剖析--3.mem
- 下一篇: textContent、innerHTM