1. 程式人生 > >Windows套接字錯誤程式碼說明

Windows套接字錯誤程式碼說明

WSAEINTR (10004)

  • 翻譯: 中斷函式呼叫。
  • 說明: 阻止操作被中斷通過呼叫 WSACancelBlockingCall (Wsapiref_704y.asp)。

WSAEACCES (10013)

  • 翻譯: 許可權被拒絕。
  • 說明: 嘗試訪問套接字訪問許可權被禁止的方式。例如,廣播的地址可用於傳送到但廣播的許可權未設定通過使用 setsockopt(SO_BROADCAST) 時,將發生此錯誤。另一個可能導致 WSAEACCES 錯誤的原因是,當呼叫繫結 (Wsapiref_6vzm.asp) 函式 (在 Microsoft Windows NT 4.0 Service Pack 4 [SP4] 或更高版本),另一個程式、 服務或核心模式驅動程式繫結到同一地址具有獨佔訪問權。
    這種獨佔的訪問是一項新功能的 Windows NT 4.0 SP4 和更高版本,並且其實現通過使用 SO_EXCLUSIVEADDRUSE 選項。

WSAEFAULT (10014)

  • 翻譯: 錯誤的地址。
  • 說明: 在嘗試使用指標引數的呼叫時,系統檢測到一個無效的指標地址。如果程式傳遞了無效的指標值,或者如果緩衝區的長度太小,則會發生此錯誤。例如,如果一個引數,它是一種 SOCKADDR 結構的長度小於 sizeof(SOCKADDR) 值,將發生此問題。

WSAEINVAL (10022)

  • 翻譯: 無效的引數。
  • 說明setsockopt (Wsapiref_94aa.asp) 函式提供了無效的引數 (例如,指定了無效的級別引數)。
    有時,它也指從插座的當前狀態,呼叫例如上沒有偵聽套接字, 接受 (Wsapiref_13aq.asp)。

WSAEMFILE (10024)

  • 翻譯: 開啟的檔案太多。
  • 說明: 有太多開啟的套接字。每個實現都可能具有套接字控制代碼可用的最大數目。這些控制代碼可能按程序、 全域性或每個執行緒。

WSAEWOULDBLOCK (10035)

  • 翻譯: 資源暫時不可用。
  • 說明: 將返回此錯誤無法立即完成,例如,非阻塞套接字操作中接收 (Wsapiref_2i9e.asp),當沒有排隊的資料要從套接字讀取。它是一個非致命的錯誤,並可以以後再重試該操作。WSAEWOULDBLOCK 通常報告的呼叫結果連線 (Wsapiref_8m7m.asp) SOCK_STREAM 非阻塞套接字,因為一些時間必須經過建立的連線。

WSAEINPROGRESS (10036)

  • 翻譯: 現在正在進行的操作。
  • 說明: 阻止操作當前正在執行。Windows 套接字只允許一個阻塞操作為每個任務或未完成的每個執行緒。如果 (無論是引用,或任何其他套接字) 進行任何其他函式呼叫,則操作將失敗並出現 WSAEINPROGRESS 錯誤。

WSAEALREADY (10037)

  • 翻譯: 操作已在進行。
  • 說明: 在非阻塞套接字上嘗試執行操作,當操作已在進行中。例如,呼叫連線 (Wsapiref_8m7m.asp) 嘗試第二次在非阻塞套接字已連線或已取消或已完成的非同步請求 (WSAAsyncGetXbyY) 嘗試。

WSAENOTSOCK (10038)

  • 翻譯: 套接字操作在非插座進行插座上的。
  • 說明: 一項操作已嘗試某件事並不是一個套接字。套接字控制代碼引數未引用有效的套接字,或者對於選擇 (Wsapiref_1ab6.asp),fd_set 的成員是無效。

WSAEDESTADDRREQ (10039)

  • 翻譯: 所需的目標地址。
  • 說明: 對套接字的操作中省略了必需的地址。例如,如果使用的遠端地址的 ADDR_ANY 呼叫傳送到 (Wsapiref_4sqa.asp),將返回此錯誤。

WSAEMSGSIZE (10040)

  • 翻譯: 訊息太長。
  • 說明: 在資料報套接字傳送的訊息大於內部訊息緩衝器或其他一些網路限制,或用於接收資料報的緩衝區比資料報小。

WSAEPROTOTYPE (10041)

  • 翻譯: 協議的套接字型別不正確。
  • 說明: 在套接字 (Wsapiref_2qr6.asp) 的函式呼叫中指定的協議不支援請求的套接字型別的語義。例如,ARPA 網際網路 UDP 協議不能指定套接字型別為 SOCK_STREAM。

WSAENOPROTOOPT (10042)

  • 翻譯: 錯誤的協議選項。
  • 說明: getsockopt (Wsapiref_8qcy.asp) 呼叫或 setsockopt (Wsapiref_94aa.asp) 呼叫中指定了未知、 無效或不受支援的選項或級別。

WSAEPROTONOSUPPORT (10043)

  • 翻譯: 不支援的協議。
  • 說明: 請求的協議既沒有配置系統中,或者它的實現不存在。例如,一個套接字 (Wsapiref_2qr6.asp) 呼叫請求的 SOCK_DGRAM 套接字,但指定的流協議。

WSAESOCKTNOSUPPORT (10044)

  • 翻譯: 套接字型別不受支援。
  • 說明: 這個地址家族中不存在指定的套接字型別的支援。例如,可選中的套接字 (Wsapiref_2qr6.asp) 呼叫可能會選擇型別,但實現不支援 SOCK_RAW SOCK_RAW 在所有套接字。

WSAEOPNOTSUPP (10045)

  • 翻譯: 不支援此操作。
  • 說明: 所引用的物件的型別不支援所嘗試的操作。當嘗試接受在資料報套接字的連線到套接字不支援此操作的套接字說明符時,通常會發生此錯誤。

WSAEPFNOSUPPORT (10046)

  • 翻譯: 協議系列不支援。
  • 說明: 它的實現不存在或尚未配置協議系列系統中。此訊息具有從 WSAEAFNOSUPPORT 稍有不同的含義。但是,它是經常互換。返回以下訊息之一的所有 Windows 套接字函式還可以都指定 WSAEAFNOSUPPORT。

WSAEAFNOSUPPORT (10047)

  • 翻譯: 系列協議系列不支援地址。
  • 說明: 所使用的地址與請求的協議不相容。所有套接字建立具有相關聯的地址族 (即 AF_INET 的網際網路協議) 和一般的協議型別 (即 SOCK_STREAM)。如果明確請求的套接字 (Wsapiref_2qr6.asp) 呼叫中的一個不正確的協議,或者錯誤系列中的一個地址用於套接字,例如,傳送到 (Wsapiref_4sqa.asp) 中,將返回此錯誤。

WSAEADDRINUSE (10048)

  • 翻譯: 地址已在使用中。
  • 說明: 通常,允許的每個套接字地址 (協議/IP 地址/埠) 只有一個使用情況。如果某個程式嘗試繫結 (Wsapiref_6vzm.asp) IP 地址或埠已被使用的一個現有的插座未正確,關閉套接字的套接字,就會發生此錯誤,或仍在結束的過程是一個套接字。對於包含要將多個套接字繫結到同一埠號的伺服器程式,請考慮使用 setsockopt (Wsapiref_94aa.asp)(SO_REUSEADDR)。客戶端程式通常沒有在所有呼叫繫結、 連線 (Wsapiref_8m7m.asp) 自動選擇一個未使用的埠。當呼叫繫結時使用萬用字元地址 (涉及 ADDR_ANY) 時,提交特定地址之前,可能會延遲 WSAEADDRINUSE 錯誤。這可能會發生更高版本,其中包括連線、 偵聽、 WSAConnect,或 WSAJoinLeaf 的另一個函式呼叫。

WSAEADDRNOTAVAIL (10049)

  • 翻譯: 不能分配請求的地址。
  • 說明: 該請求的地址是在其上下文中的無效。導致此錯誤通常試圖繫結 (Wsapiref_6vzm.asp) 到一個無效的本地計算機的地址。此錯誤可能還會從連線 (Wsapiref_8m7m.asp) sendto (Wsapiref_4sqa.asp) WSAConnect (Wsapiref_8kc2.asp)、 WSAJoinLeaf (Wsapiref_7dv6.asp) 或 WSASendTo (Wsapiref_752q.asp) 時遠端地址或埠是無效的遠端計算機 (for example,地址或埠 0)。

WSAENETDOWN (10050)

  • 翻譯: 在網路出現故障。
  • 說明: 套接字操作遇到了死網路。此錯誤可能意味著網路系統 (即,對執行 Windows 套接字 DLL 協議堆疊)、 網路介面或本地網路本身的嚴重故障。

WSAENETUNREACH (10051)

  • 翻譯: 連線不上網路。
  • 說明: 到無法訪問的網路嘗試執行套接字操作。此錯誤通常意味著本地軟體知道沒有訪問遠端主機的路由。

WSAENETRESET (10052)

  • 翻譯: 網路中斷連線重置。
  • 說明: 連線保持活動狀態的活動,在操作過程中檢測到故障原因被中斷。它還可返回由 setsockopt (Wsapiref_94aa.asp) 如果嘗試將 SO_KEEPALIVE 設定在連線已失敗。

WSAECONNABORTED (10053)

  • 翻譯: 軟體造成連線終止。
  • 說明: 已建立的連線停止主機計算機中的軟體可能因為資料傳輸超時或協議錯。

WSAECONNRESET (10054)

  • 翻譯: 連線被對等方重置。
  • 說明: 現有的連線被遠端主機強行關閉。如果突然停止遠端主機上的對等程式,重新啟動主機時,或遠端主機使用硬關閉,通常會發生此錯誤。有關遠端的套接字上的 SO_LINGER 選項的詳細資訊,請參閱 setsockopt (Wsapiref_94aa.asp)。如果由於保持加電檢測到故障,而一個或多個操作正在進行中的活動中,連線被中斷,也可能導致此錯誤。使用 WSAENETRESET 時,正在進行的操作會失敗。隨後的操作失敗,出現 WSAECONNRESET。

WSAENOBUFS (10055)

  • 翻譯: 沒有可用的緩衝區空間。
  • 說明: 由於系統緩衝區空間不足,或者因為佇列已滿,不能執行套接字操作。

WSAEISCONN (10056)

  • 翻譯: 套接字已連線。
  • 說明: 在已連線的套接字上發出連線請求。如果傳送到 (Wsapiref_4sqa.asp) 上呼叫連線的 SOCK_DGRAM 套接字 (對於 SOCK_STREAM 套接字,sendto (Wsapiref_4sqa.asp) 中的收件人蔘數將被忽略) 雖然其他實現將此視為有效的匹配項,某些實現還會返回該錯誤。

WSAENOTCONN (10057)

  • 翻譯: 套接字未連線。
  • 說明: 由於套接字沒有連線並且 (在使用 sendto [Wsapiref_4sqa.asp] 的資料文報套接字上傳送時,未提供地址),不允許傳送或接收資料的請求。任何其他型別的操作也可能會返回此錯誤,例如,如果連線已被重置設定 SO_KEEPALIVE setsockopt (Wsapiref_94aa.asp)。

WSAESHUTDOWN (10058)

  • 翻譯: 套接字關閉後無法傳送。
  • 說明: 傳送或接收資料的請求不允許的因為套接字有已關閉在該方向與以前的關閉 (Wsapiref_60z6.asp) 呼叫。當呼叫一次關閉時,將請求關閉套接字的部分。這是一個訊號,它已停止使用的傳送或接收程序 (或兩者)。

WSAETIMEDOUT (10060)

  • 翻譯: 連線已超時。
  • 說明: 因為被連線的方沒有正確響應後一段時間,或已建立的連線失敗,因為被連線的主機未能響應而導致連線嘗試失敗。

WSAECONNREFUSED (10061)

  • 翻譯: 連線被拒絕。
  • 說明: 可以建立任何連線,因為目標計算機主動拒絕。此錯誤通常是因試圖連線到的服務,在外部主機上,就是一種沒有執行的伺服器程式處於非活動狀態。

WSAEHOSTDOWN (10064)

  • 翻譯: 主機已關閉。
  • 說明: 套接字操作失敗,因為目標主機已關閉。套接字操作遇到死的主機。尚未啟動的本地主機上的網路活動。這些條件都更有可能由錯誤 WSAETIMEDOUT。

WSAEHOSTUNREACH (10065)

  • 翻譯: 沒有到主機的路由。
  • 說明: 套接字操作已嘗試到無法訪問的主機。請參閱 WSAENETUNREACH。

WSAEPROCLIM (10067)

  • 翻譯: 程序太多。
  • 描述: Windows 套接字實現可以在同一時間使用的程式的數目有限制。如果達到限制,WSAStartup (Wsapiref_1v8y.asp) 可能會失敗並生成此錯誤。

WSASYSNOTREADY (10091)

  • 翻譯: 網路子系統不可用。
  • 說明: 如果 Windows 套接字實現當前不能正常工作,因為它用來提供網路服務的基礎系統當前不可用,WSAStartup (Wsapiref_1v8y.asp) 將返回此錯誤。確認下列資訊:
    • 確認適當的 Windows 套接字 DLL 檔案的當前路徑。
    • 確認他們沒有試圖在同一時間使用多個 Windows 套接字實現。
    • 如果有多個 Winsock DLL 在系統上,確認適用於網路子系統當前載入第一個 Winsock DLL 的路徑中。
    • 請確認所有必需的元件當前已安裝並正確配置根據 Windows 套接字實現文件。

WSAVERNOTSUPPORTED (10092)

  • 翻譯: 超出範圍的 Winsock.dll 版本。
  • 說明: 當前的 Windows 套接字實現不支援該程式請求的 Windows 套接字規範版本。請確保正在訪問任何舊的 Windows 套接字 DLL 檔案。

WSANOTINITIALISED (10093)

  • 翻譯: 還沒有執行成功的 WSAStartup。
  • 說明: 兩個程式中都有不呼叫 WSAStartup (Wsapiref_1v8y.asp) 或 WSAStartup (Wsapiref_1v8y.asp) 失敗。該程式可能正在訪問的插座,並不屬於當前活動任務 (即,正在嘗試進行共享的任務之間的套接字),或 WSACleanup 已被呼叫的次數太多。

WSAEDISCON (10101)

  • 翻譯: 正在進行的正常關機。
  • 說明: 通過 WSARecv (Wsapiref_4z1u.asp) 和 WSARecvFrom (Wsapiref_4wky.asp) 來指示遠端方已開始正常關機序列將返回此錯誤。

WSATYPE_NOT_FOUND (10109)

  • 翻譯: 類找不到型別。
  • 說明: 未找到指定的類。

WSAHOST_NOT_FOUND (11001)

  • 翻譯: 找不到主機。沒有此主機不存在。
  • 說明: 該名稱不是正式的主機名或別名,或找不到它的資料庫中,將會被詢問。此錯誤可能也會返回的協議和服務的查詢,並在相關資料庫中找不到指定的名稱的方法。

WSATRY_AGAIN (11002)

  • 翻譯: 沒有發現非權威主機。
  • 說明: 此錯誤通常是臨時錯誤在主機名稱解析,過程中,這意味著本地伺服器沒有收到響應來自授權伺服器。稍後進行的重試可能會成功。

WSANO_RECOVERY (11003)

  • 翻譯: 這是一個不可恢復的錯誤。
  • 說明: 此錯誤表明在資料庫查詢中出現某種形式的不可恢復的錯誤。如果找不到資料庫檔案 (例如,BSD 相容主機、 服務或協議檔案) 或 DNS 請求返回的一個嚴重錯誤的伺服器,則可能會發生此錯誤。

WSANO_DATA (11004)

  • 翻譯: 有效的名稱、 請求的型別的任何資料記錄。
  • 說明: 請求的名稱有效並且已找到在資料庫中,但它不具有正確的關聯的資料,它正在解析的。這樣的典型示例嘗試就是一個主機名稱到地址轉換 (使用 gethostbyname [Wsapiref_0q5u.asp] 或 [Wsapiref_7bhu.asp] WSAAsyncGetHostByName) 使用的 DNS 伺服器。但沒有一個記錄,則返回的 MX 記錄。這指示主機本身存在,但不可直接訪問。

WSA_INVALID_HANDLE (作業系統相關)

  • 翻譯: 指定事件物件的控制代碼無效。
  • 說明: 某個程式嘗試使用一個事件物件,但指定的控制代碼無效。

WSA_INVALID_PARAMETER (作業系統相關)

  • 翻譯: 一個或多個引數不正確。
  • 說明: 使用一個 Windows 套接字函式,直接將對映到 Win32 函式的程式。Win32 函式表示一個或多個引數有問題。

WSA_IO_INCOMPLETE (作業系統相關)

  • 翻譯: 重疊的 I/O 事件物件會在終止狀態。
  • 說明: 該程式已嘗試確定尚未完成的重疊操作的狀態。在輪詢模式中使用 WSAGetOverlappedResult (使用 fWait 標誌設定為 FALSE) 來確定時,重疊的操作已完成的程式在操作完成之前收到此錯誤程式碼。

WSA_IO_PENDING (作業系統相關)

  • 翻譯: 重疊的操作將在稍後完成。
  • 說明: 該程式已啟動無法立即完成一個重疊的操作。操作完成後,以備稍後傳送完成指示。

WSA_NOT_ENOUGH_MEMORY (作業系統相關)

  • 翻譯: 沒有足夠的記憶體。
  • 說明: 使用一個 Windows 套接字函式,直接將對映到 Win32 函式的程式。Win32 函式表示所需的記憶體資源不足。

WSA_OPERATION_ABORTED (作業系統相關)

  • 翻譯: 重疊的操作已中止。
  • 說明: 由於套接字已關閉或 WSAIoctl (Wsapiref_6ik2.asp) 中的 SIO_FLUSH 命令執行重疊的操作被取消。

WSAINVALIDPROCTABLE (作業系統相關)

  • 翻譯: 無效的過程表從服務提供商聯絡。
  • 說明: 一個服務提供程式返回一個無效的過程表到 Ws2_32.dll。(通常原因是一個或多個函式指標是空的。)

WSAINVALIDPROVIDER (作業系統相關)

  • 翻譯: 無效的服務提供程式的版本號。
  • 說明: 一個服務提供程式返回不 2.0 版本編號。

WSAPROVIDERFAILEDINIT (作業系統相關)

  • 翻譯: 無法初始化服務提供商。
  • 說明: 兩個服務提供程式的 DLL 不能載入 (LoadLibrary 失敗),或提供程式的 WSPStartup/NSPStartup 函式失敗。

WSASYSCALLFAILURE (作業系統相關)

  • 翻譯: 系統呼叫失敗。
  • 說明: 永遠不會發生故障的系統呼叫失敗時,將返回此錯誤。例如,如果對 WaitForMultipleObjects 的呼叫失敗或某一登錄檔函式失敗時嘗試更改協議或名稱空間目錄,就會發生此錯誤。

參見:http://support.microsoft.com/kb/819124/zh-cn