常見網絡錯誤代碼解釋

擴號中的爲錯誤代碼。
按 Ctrl + F 鍵,然後輸入您遇的錯誤代碼,就可以快速查找到解釋。

WSAEACCES (10013) Permission denied.
試圖使用被禁止的訪問權限去訪問套接字。例如,在沒有使用函數setsockopt()的SO_BROADCAST命令設置廣播權限的套接字上使用函數sendto()給一個廣播地址發送數據。

WSAEADDRINUSE (10048) Address already in use.
正常情況下每一個套接字地址(協議/IP地址/端口號)只允許使用一次。當應用程序試圖使用bind()函數將一個被已存在的或沒有完全關閉的或正在關閉的套接字使用了的IP地址/端口號綁紮到一個新套接字上時,該錯誤發生。對於服務器應用程序來說,如果需要使用bind()函數將多個套接字綁紮到同一個端口上,可以考慮使用setsockopt()函數的 SO_REUSEADDR命令。客戶應用程序一般不必使用bind()函數——connect()函數總是自動選擇沒有使用的端口號。當bind()函數操作的是通配地址(包括ADDR_ANY)時,錯誤WSAEADDRINUSE可能延遲到一個明確的地址被提交時才發生。這可能在後續的函數如connect()、listen()、WSAConnect()或WSAJoinLeaf()調用時發生。

WSAEADDRNOTAVAIL (10049) Cannot assign requested address.
被請求的地址在它的環境中是不合法的。通常地在bind()函數試圖將一個本地機器不合法的地址綁紮到套接字時產生。它也可能在connect()、sendto()、WSAConnect()、WSAJoinLeaf()或WSASendTo()函數調用時因遠程機器的遠程地址或端口號非法(如0地址或0端口號)而產生。

WSAEAFNOSUPPORT (10047) Address family not supported by protocol family.
使用的地址與被請求的協議不兼容。所有的套接字在創建時都與一個地址族(如IP協議對應的AF_INET)和一個通用的協議類型(如SOCK_STREAM)聯繫起來。如果在socket()調用中明確地要求一個不正確的協議,或在調用sendto()等函數時使用了對套接字來說是錯誤的地址族的地址,該錯誤返回。

WSAEALREADY (10037) Operation already in progress.
當在非阻塞套接字上已經有一個操作正在進行時,又有一個操作試圖在其上執行則產生此錯誤。如:在一個正在進行連接的非阻塞套接字上第二次調用connect()函數;或取消一個已經被取消或已完成的異步請求(WSAAsyncGetXbyY())。

WSAECONNABORTED (10053) Software caused connection abort.
一個已建立的連接被你的主機上的軟件終止,可能是因爲一次數據傳輸超時或是協議錯誤

WSAECONNREFUSED (10061) Connection refused.
因爲目標主機主動拒絕,連接不能建立。這通常是因爲試圖連接到一個遠程主機上不活動的服務,如沒有服務器應用程序處於執行狀態。

WSAECONNRESET (10054) Connection reset by peer.
存在的連接被遠程主機強制關閉。通常原因爲:遠程主機上對等方應用程序突然停止運行,或遠程主機重新啓動,或遠程主機在遠程方套接字上使用了“強制”關閉(參見setsockopt(SO_LINGER))。另外,在一個或多個操作正在進行時,如果連接因“keep-alive”活動檢測到一個失敗而中斷,也可能導致此錯誤。此時,正在進行的操作以錯誤碼WSAENETRESET失敗返回,後續操作將失敗返回錯誤碼WSAECONNRESET。

WSAEDESTADDRREQ (10039) Destination address required.
在套接字上一個操作所必須的地址被遺漏。例如,如果sendto()函數被調用且遠程地址爲ADDR_ANY時,此錯誤被返回。

WSAEFAULT (10014) Bad address.
系統檢測到調用試圖使用的一個指針參數指向的是一個非法指針地址。如果應用程序傳遞一個非法的指針值,或緩衝區長度太小,此錯誤發生。例如,參數爲結構sockaddr,但參數的長度小於sizeof(struct sockaddr)。

WSAEHOSTDOWN (10064) Host is down.
套接字操作因爲目的主機關閉而失敗返回。套接字操作遇到不活動主機。本地主機上的網絡活動沒有初始化。這些條件由錯誤碼WSAETIMEDOUT指示似乎更合適。

WSAEHOSTUNREACH (10065) No route to host.
試圖和一個不可達主機進行套接字操作。參見WSAENETUNREACH。

WSAEINPROGRESS (10036) Operation now in progress.
一個阻塞操作正在執行。Windows Sockets只允許一個任務(或線程)在同一時間可以有一個未完成的阻塞操作,如果此時調用了任何函數(不管此函數是否引用了該套接字或任何其它套接字),此函數將以錯誤碼WSAEINPROGRESS返回。

WSAEINTR (10004) Interrupted function call.
阻塞操作被函數WSACancelBlockingCall ()調用所中斷。

WSAEINVAL (10022) Invalid argument.
提供了非法參數(例如,在使用setsockopt()函數時指定了非法的level)。在一些實例中,它也可能與套接字的當前狀態相關,例如,在套接字沒有使用listen()使其處於監聽時調用accept()函數。

WSAEISCONN (10056) Socket is already connected.
連接請求發生在已經連接的套接字上。一些實現對於在已連接SOCK_DGRAM套接字上使用sendto()函數的情況也返回此錯誤(對於SOCK_STREAM套接字,sendto()函數的to參數被忽略),儘管其它一些實現將此操作視爲合法事件。

WSAEMFILE (10024) Too many open files.
打開了太多的套接字。不管是對整個系統還是每一進程或線程,Windows Sockets實現都可能有一個最大可用的套接字句柄數。

WSAEMSGSIZE (10040) Message too long.
在數據報套接字上發送的一個消息大於內部消息緩衝區或一些其它網絡限制,或者是用來接受數據報的緩衝區小於數據報本身。

WSAENETDOWN (10050) Network is down.
套接字操作遇到一個不活動的網絡。此錯誤可能指示網絡系統(例如WinSock DLL運行的協議棧)、網絡接口或本地網絡本身發生了一個嚴重的失敗。

WSAENETRESET (10052) Network dropped connection on reset.
在操作正在進行時連接因“keep-alive”檢測到失敗而中斷。也可能由setsockopt()函數返回,如果試圖使用它在一個已經失敗的連接上設置SO_KEEPALIVE
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章