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