【轉貼】常見網路錯誤碼解釋

來源:互聯網
上載者:User
 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。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.