




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。windowssocket錯誤碼及出錯原因-windowssocket錯誤碼及出錯原因HYPERLINK/blog/lm=0&t=1&c=fks_087066081085080070082086074064084083081064083086085o編程編程2009-11-0114:33:21閱讀1890評論0字號:大中小訂閱本文轉(zhuǎn)自HYPERLINK/khler/archive/2007/07/11/1685023.aspx/khler/archive/2007/07/11/1685023.aspxW
2、indowsSockets在頭文件winsock.h中定義了所有的錯誤碼,它們包括以“WSA”打頭的WindowsSockets實現(xiàn)返回的錯誤碼和BerkeleySockets定義的錯誤碼全集。定義BerkeleySockets錯誤碼是為了確保原有軟件的可移植性。A.1WindowsSockets錯誤碼列表表A.1列出了WSAGetLastError()函數(shù)返回的可能錯誤碼和它們的解釋,它們可分為四個部分。錯誤碼的第一部分是用來解決在不同的C編譯中對標準C錯誤碼的不一致的定義。錯誤碼的第二部分是標準BerkeleySockets錯誤碼的WindowsSockets版本。錯誤碼的第三部分包括特定
3、WindowsSockets擴充的錯誤碼。錯誤碼的第四部分由WindowsSockets的getXbyY()和WSAAsyncGetXByY()函數(shù)返回,相當于Berkeley軟件中由變量h_errno返回的錯誤(事實上,WindowsSockets在頭文件winsock.h中已將h_error定義成其值為WSAGetLastError()的一個宏),它們相當于由域名服務(wù)(DomainNameService)返回的各種失敗。如果WindowsSockets實現(xiàn)沒有使用域名服務(wù),它將使用最合適的代碼。一般地,WindowsSockets應(yīng)用程序應(yīng)該將錯誤WSAHOST_NOT_FOUND和WSA
4、NO_DATA解釋為指示關(guān)鍵字(名字,地址等)沒有找著,而錯誤WSATRY_AGAIN和WSANO_RECOVERY是提醒名字服務(wù)自身是非操作的。錯誤碼由WindowsSockets規(guī)范定義,在所有同一版本規(guī)范的WindowsSockets兼容實現(xiàn)中,它們是一致的。表A.1WindowsSockets錯誤碼WindowsSockets錯誤碼Berkeley對應(yīng)錯誤碼錯誤號解釋W(xué)SAEINTREINTR10004同標準CWSAEBADFEBADF10009同標準CWSAEACCESEACCES10013同標準CWSAEFAULTEFAULT10014同標準CWSAEINVALEINVAL1002
5、2同標準CWSAEMFILEEMFILE10024同標準CWSAEWOULDBLOCKEWOULDBLOCK10035同BSDWSAEINPROGRESSEINPROGRESS10036當一個阻塞函數(shù)正在進行時,調(diào)用任何WindowsSocketsAPI函數(shù)均返回此錯誤WSAEALREADYEALREADY10037同BSDWSAENOTSOCKENOTSOCK10038同BSDWSAEDESTADDRREQEDESTADDRREQ10039同BSDWSAEMSGSIZEEMSGSIZE10040同BSDWSAEPROTOTYPEEPROTOTYPE10041同BSDWSAENOPROTOOP
6、TENOPROTOOPT10042同BSDWSAEPROTONOSUPPORTEPROTONOSUPPORT10043同BSDWSAESOCKTNOSUPPORTESOCKTNOSUPPORT10044同BSDWSAEOPNOTSUPPEOPNOTSUPP10045同BSDWSAEPFNOSUPPORTEPFNOSUPPORT10046同BSDWSAEAFNOSUPPORTEAFNOSUPPORT10047同BSDWSAEADDRINUSEEADDRINUSE10048同BSDWSAEADDRNOTAVAILEADDRNOTAVAIL10049同BSDWSAENETDOWNENETDOWN10
7、050同BSD。任何時候只要WindowsSockets實現(xiàn)檢測到網(wǎng)絡(luò)子系統(tǒng)失敗,它就報告此錯誤。WSAENETUNREACHENETUNREACH10051同BSDWSAENETRESETENETRESET10052同BSDWSAECONNABORTEDECONNABORTED10053同BSDWSAECONNRESETECONNRESET10054同BSDWSAENOBUFSENOBUFS10055同BSDWSAEISCONNEISCONN10056同BSDWSAENOTCONNENOTCONN10057同BSDWSAESHUTDOWNESHUTDOWN10058同BSDWSAETOOMA
8、NYREFSETOOMANYREFS10059同BSDWSAETIMEDOUTETIMEDOUT10060同BSDWSAECONNREFUSEDECONNREFUSED10061同BSDWSAELOOPELOOP10062同BSDWSAENAMETOOLONGENAMETOOLONG10063同BSDWSAEHOSTDOWNEHOSTDOWN10064同BSDWSAEHOSTUNREACHEHOSTUNREACH10065同BSDWSASYSNOTREADY10091由WSAStartup()返回,指示網(wǎng)絡(luò)子系統(tǒng)無法使用。WSAVERNOTSUPPORTED10092由WSAStartup()
9、返回,指示W(wǎng)indowsSocketsDLL不能支持此應(yīng)用程序。WSANOTINITIALISED10093由除WSAStartup()之外的其它函數(shù)返回,指示尚沒有一次成功的WSAStartup()調(diào)用執(zhí)行過。WSAEDISCON10101由WSARecv()和WSARecvFrom()返回,指示遠程方已經(jīng)初始化了一個“雅致”的shutdown序列。WSAHOST_NOT_FOUNDHOST_NOT_FOUND11001同BSDWSATRY_AGAINTRY_AGAIN11002同BSDWSANO_RECOVERYNO_RECOVERY11003同BSDWSANO_DATANO_DATA11
10、004同BSDA.2WindowsSockets錯誤碼擴展描述下面給出WSAGetLastError()函數(shù)返回的可能錯誤碼按字母順序排列的列表,同時給出簡要的擴展描述。WSAEACCES(10013)Permissiondenied.試圖使用被禁止的訪問權(quán)限去訪問套接字。例如,在沒有使用函數(shù)setsockopt()的SO_BROADCAST命令設(shè)置廣播權(quán)限的套接字上使用函數(shù)sendto()給一個廣播地址發(fā)送數(shù)據(jù)。WSAEADDRINUSE(10048)Addressalreadyinuse.正常情況下每一個套接字地址(協(xié)議IP地址端口號)只允許使用一次。當應(yīng)用程序試圖使用bind()函數(shù)將一
11、個被已存在的或沒有完全關(guān)閉的或正在關(guān)閉的套接字使用了的IP地址端口號綁扎到一個新套接字上時,該錯誤發(fā)生。對于服務(wù)器應(yīng)用程序來說,如果需要使用bind()函數(shù)將多個套接字綁扎到同一個端口上,可以考慮使用setsockopt()函數(shù)的SO_REUSEADDR命令??蛻魬?yīng)用程序一般不必使用bind()函數(shù)connect()函數(shù)總是自動選擇沒有使用的端口號。當bind()函數(shù)操作的是通配地址(包括ADDR_ANY)時,錯誤WSAEADDRINUSE可能延遲到一個明確的地址被提交時才發(fā)生。這可能在后續(xù)的函數(shù)如connect()、listen()、WSAConnect()或WSAJoinLeaf()調(diào)用時
12、發(fā)生。WSAEADDRNOTAVAIL(10049)Cannotassignrequestedaddress.被請求的地址在它的環(huán)境中是不合法的。通常地在bind()函數(shù)試圖將一個本地機器不合法的地址綁扎到套接字時產(chǎn)生。它也可能在connect()、sendto()、WSAConnect()、WSAJoinLeaf()或WSASendTo()函數(shù)調(diào)用時因遠程機器的遠程地址或端口號非法(如0地址或0端口號)而產(chǎn)生。WSAEAFNOSUPPORT(10047)Addressfamilynotsupportedbyprotocolfamily.使用的地址與被請求的協(xié)議不兼容。所有的套接字在創(chuàng)建時都與
13、一個地址族(如IP協(xié)議對應(yīng)的AF_INET)和一個通用的協(xié)議類型(如SOCK_STREAM)聯(lián)系起來。如果在socket()調(diào)用中明確地要求一個不正確的協(xié)議,或在調(diào)用sendto()等函數(shù)時使用了對套接字來說是錯誤的地址族的地址,該錯誤返回。WSAEALREADY(10037)Operationalreadyinprogress.當在非阻塞套接字上已經(jīng)有一個操作正在進行時,又有一個操作試圖在其上執(zhí)行則產(chǎn)生此錯誤。如:在一個正在進行連接的非阻塞套接字上第二次調(diào)用connect()函數(shù);或取消一個已經(jīng)被取消或已完成的異步請求(WSAAsyncGetXbyY())。WSAECONNABORTED(1
14、0053)Softwarecausedconnectionabort.一個已建立的連接被你的主機上的軟件終止,可能是因為一次數(shù)據(jù)傳輸超時或是協(xié)議錯誤。WSAECONNREFUSED(10061)Connectionrefused.因為目標主機主動拒絕,連接不能建立。這通常是因為試圖連接到一個遠程主機上不活動的服務(wù),如沒有服務(wù)器應(yīng)用程序處于執(zhí)行狀態(tài)。WSAECONNRESET(10054)Connectionresetbypeer.存在的連接被遠程主機強制關(guān)閉。通常原因為:遠程主機上對等方應(yīng)用程序突然停止運行,或遠程主機重新啟動,或遠程主機在遠程方套接字上使用了“強制”關(guān)閉(參見setsocko
15、pt(SO_LINGER))。另外,在一個或多個操作正在進行時,如果連接因“keep-alive”活動檢測到一個失敗而中斷,也可能導(dǎo)致此錯誤。此時,正在進行的操作以錯誤碼WSAENETRESET失敗返回,后續(xù)操作將失敗返回錯誤碼WSAECONNRESET。WSAEDESTADDRREQ(10039)Destinationaddressrequired.在套接字上一個操作所必須的地址被遺漏。例如,如果sendto()函數(shù)被調(diào)用且遠程地址為ADDR_ANY時,此錯誤被返回。WSAEFAULT(10014)Badaddress.系統(tǒng)檢測到調(diào)用試圖使用的一個指針參數(shù)指向的是一個非法指針地址。如果應(yīng)用程
16、序傳遞一個非法的指針值,或緩沖區(qū)長度太小,此錯誤發(fā)生。例如,參數(shù)為結(jié)構(gòu)sockaddr,但參數(shù)的長度小于sizeof(structsockaddr)。WSAEHOSTDOWN(10064)Hostisdown.套接字操作因為目的主機關(guān)閉而失敗返回。套接字操作遇到不活動主機。本地主機上的網(wǎng)絡(luò)活動沒有初始化。這些條件由錯誤碼WSAETIMEDOUT指示似乎更合適。WSAEHOSTUNREACH(10065)Noroutetohost.試圖和一個不可達主機進行套接字操作。參見WSAENETUNREACH。WSAEINPROGRESS(10036)Operationnowinprogress.一個阻塞
17、操作正在執(zhí)行。WindowsSockets只允許一個任務(wù)(或線程)在同一時間可以有一個未完成的阻塞操作,如果此時調(diào)用了任何函數(shù)(不管此函數(shù)是否引用了該套接字或任何其它套接字),此函數(shù)將以錯誤碼WSAEINPROGRESS返回。WSAEINTR(10004)Interruptedfunctioncall.阻塞操作被函數(shù)WSACancelBlockingCall()調(diào)用所中斷。WSAEINVAL(10022)Invalidargument.提供了非法參數(shù)(例如,在使用setsockopt()函數(shù)時指定了非法的level)。在一些實例中,它也可能與套接字的當前狀態(tài)相關(guān),例如,在套接字沒有使用list
18、en()使其處于監(jiān)聽時調(diào)用accept()函數(shù)。WSAEISCONN(10056)Socketisalreadyconnected.連接請求發(fā)生在已經(jīng)連接的套接字上。一些實現(xiàn)對于在已連接SOCK_DGRAM套接字上使用sendto()函數(shù)的情況也返回此錯誤(對于SOCK_STREAM套接字,sendto()函數(shù)的to參數(shù)被忽略),盡管其它一些實現(xiàn)將此操作視為合法事件。WSAEMFILE(10024)Toomanyopenfiles.打開了太多的套接字。不管是對整個系統(tǒng)還是每一進程或線程,WindowsSockets實現(xiàn)都可能有一個最大可用的套接字句柄數(shù)。WSAEMSGSIZE(10040)Me
19、ssagetoolong.在數(shù)據(jù)報套接字上發(fā)送的一個消息大于內(nèi)部消息緩沖區(qū)或一些其它網(wǎng)絡(luò)限制,或者是用來接受數(shù)據(jù)報的緩沖區(qū)小于數(shù)據(jù)報本身。WSAENETDOWN(10050)Networkisdown.套接字操作遇到一個不活動的網(wǎng)絡(luò)。此錯誤可能指示網(wǎng)絡(luò)系統(tǒng)(例如WinSockDLL運行的協(xié)議棧)、網(wǎng)絡(luò)接口或本地網(wǎng)絡(luò)本身發(fā)生了一個嚴重的失敗。WSAENETRESET(10052)Networkdroppedconnectiononreset.在操作正在進行時連接因“keep-alive”檢測到失敗而中斷。也可能由setsockopt()函數(shù)返回,如果試圖使用它在一個已經(jīng)失敗的連接上設(shè)置SO_KE
20、EPALIVE。WSAENETUNREACH(10051)Networkisunreachable.試圖和一個無法到達的網(wǎng)絡(luò)進行套接字操作。它常常意味著本地軟件不知道到達遠程主機的路由。WSAENOBUFS(10055)Nobufferspaceavailable.由于系統(tǒng)缺乏足夠的緩沖區(qū)空間,或因為隊列已滿,在套接字上的操作無法執(zhí)行。WSAENOPROTOOPT(10042)Badprotocoloption.在getsockopt()或setsockopt()調(diào)用中,指定了一個未知的、非法的或不支持的選項或?qū)樱╨evel)。WSAENOTCONN(10057)Socketisnotconn
21、ected.因為套接字沒有連接,發(fā)送或接收數(shù)據(jù)的請求不被允許,或者是使用sendto()函數(shù)在數(shù)據(jù)報套接字上發(fā)送時沒有提供地址。任何其它類型的操作也可以返回此錯誤,例如,使用setsockopt()函數(shù)在一個已重置的連接上設(shè)置SO_KEEPALIVE。WSAENOTSOCK(10038)Socketoperationonnon-socket.操作試圖不是在套接字上進行。它可能是套接字句柄參數(shù)沒有引用到一個合法套接字,或者是調(diào)用select()函數(shù)時,一個fd_set中的成員不合法。WSAEOPNOTSUPP(10045)Operationnotsupported.對于引用的對象的類型來說,試圖
22、進行的操作不支持。通常它發(fā)生在套接字不支持此操作的套接字描述符上,例如,試圖在數(shù)據(jù)報套接字上接收連接。WSAEPFNOSUPPORT(10046)Protocolfamilynotsupported.協(xié)議簇沒有在系統(tǒng)中配置或沒有支持它的實現(xiàn)存在。它與WSAEAFNOSUPPORT有些微的不同,但在絕大多數(shù)情況下是可互換的,返回這兩個錯誤的所有WindowsSockets函數(shù)的說明見WSAEAFNOSUPPORT的描述。WSAEPROCLIM(10067)Toomanyprocesses.WindowsSockets實現(xiàn)可能限制同時使用它的應(yīng)用程序的數(shù)量,如果達到此限制,WSAStartup()
23、函數(shù)可能因此錯誤失敗。WSAEPROTONOSUPPORT(10043)Protocolnotsupported.請求的協(xié)議沒有在系統(tǒng)中配置或沒有支持它的實現(xiàn)存在。例如,socket()調(diào)用請求一個SOCK_DGRAM套接字,但指定的是流協(xié)議。WSAEPROTOTYPE(10041)Protocolwrongtypeforsocket.在socket()函數(shù)調(diào)用中指定的協(xié)議不支持請求的套接字類型的語義。例如,ARPAInternetUDP協(xié)議不能和SOCK_STREAM套接字類型一同指定。WSAESHUTDOWN(10058)Cannotsendaftersocketshutdown.因為套接
24、字在相應(yīng)方向上已經(jīng)被先前的shutdown()調(diào)用關(guān)閉,因此該方向上的發(fā)送或接收請求不被允許。通過調(diào)用shutdown()函數(shù)來請求對套接字的部分關(guān)閉,它發(fā)送一個信號來停止發(fā)送或接收或雙向操作。WSAESOCKTNOSUPPORT(10044)Sockettypenotsupported.不支持在此地址族中指定的套接字類型。例如,socket()調(diào)用中選擇了可選的套接字類型SOCK_RAW,但是實現(xiàn)卻根本不支持SOCK_RAW類型的套接字。WSAETIMEDOUT(10060)Connectiontimedout.連接請求因被連接方在一個時間周期內(nèi)不能正確響應(yīng)而失敗,或已經(jīng)建立的連接因被連接的
25、主機不能響應(yīng)而失敗。WSATYPE_NOT_FOUND(10109)Classtypenotfound指定的類沒有找到。WSAEWOULDBLOCK(10035)Resourcetemporarilyunavailable.此錯誤由在非阻塞套接字上不能立即完成的操作返回,例如,當套接字上沒有排隊數(shù)據(jù)可讀時調(diào)用了recv()函數(shù)。此錯誤不是嚴重錯誤,相應(yīng)操作應(yīng)該稍后重試。對于在非阻塞SOCK_STREAM套接字上調(diào)用connect()函數(shù)來說,報告WSAEWOULDBLOCK是正常的,因為建立一個連接必須花費一些時間。WSAHOST_NOT_FOUND(11001)Hostnotfound.主機
26、未知。此名字不是一個正式主機名,也不是一個別名,它不能在查詢的數(shù)據(jù)庫中找到。此錯誤也可能在協(xié)議和服務(wù)查詢中返回,它意味著指定的名字不能在相關(guān)數(shù)據(jù)庫中找到。WSA_INVALID_HANDLE(OSdependent)Specifiedeventobjecthandleisinvalid.應(yīng)用程序試圖使用一個事件對象,但指定的句柄非法。WSA_INVALID_PARAMETER(OSdependent)Oneormoreparametersareinvalid.應(yīng)用程序使用了一個直接映射到Win32函數(shù)的WinSock函數(shù),而Win32函數(shù)指示一個或多個參數(shù)有問題。WSAINVALIDPROCT
27、ABLE(OSdependent)Invalidproceduretablefromserviceprovider.服務(wù)提供者返回了一個假的WS2_32.DLL程序(procedure)表。這通常是由一個或多個函數(shù)指針為空引起。WSAINVALIDPROVIDER(OSdependent)Invalidserviceproviderversionnumber.服務(wù)提供者返回一個不同于2.2的版本號。WSA_IO_INCOMPLETE(OSdependent)OverlappedI/Oeventobjectnotinsignaledstate.應(yīng)用程序試圖檢測一個沒有完成的重疊操作的狀態(tài)。應(yīng)用程
28、序使用函數(shù)WSAGetOverlappedResult()(參數(shù)fWait設(shè)置為false)以輪詢模式檢測一個重疊操作是否完成時將得到此錯誤碼,除非該操作已經(jīng)完成。WSA_IO_PENDING(OSdependent)Overlappedoperationswillcompletelater.應(yīng)用程序已經(jīng)初始化了一個不能立即完成的重疊操作。當稍后此操作完成時將有完成指示。WSA_NOT_ENOUGH_MEMORY(OSdependent)Insufficientmemoryavailable.應(yīng)用程序使用了一個直接映射到Win32函數(shù)的WinSock函數(shù),而Win32函數(shù)指示缺乏必要的內(nèi)存資源
29、。WSANOTINITIALISED(10093)SuccessfulWSAStartup()notyetperformed.應(yīng)用程序沒有調(diào)用WSAStartup()函數(shù),或函數(shù)WSAStartup()調(diào)用失敗了。應(yīng)用程序可能訪問了不屬于當前活動任務(wù)的套接字(例如試圖在任務(wù)間共享套接字),或調(diào)用了過多的WSACleanup()函數(shù)。WSANO_DATA(11004)Validname,nodatarecordofrequestedtype.請求的名字合法并且在數(shù)據(jù)庫中找到了,但它沒有正確的關(guān)聯(lián)數(shù)據(jù)用于解析。此錯誤的通常例子是主機名到地址(使用gethostbyname()或WSAAsyncGe
30、tHostByName()函數(shù))的DNS轉(zhuǎn)換請求,返回了MX(MaileXchanger)記錄但是沒有A(Address)記錄,它指示主機本身是存在的,但是不能直接到達。WSANO_RECOVERY(11003)Thisisanon-recoverableerror.此錯誤碼指示在數(shù)據(jù)庫查找時發(fā)生了某種不可恢復(fù)錯誤。它可能是因為數(shù)據(jù)庫文件(如BSD兼容的HOSTS、SERVICES或PROTOCOLS文件)找不到,或DNS請求應(yīng)服務(wù)器有嚴重錯誤而返回。WSAPROVIDERFAILEDINIT(OSdependent)Unabletoinitializeaserviceprovider.服務(wù)提
31、供者的DLL不能加載(LoadLibrary()失?。┗蛱峁┱叩腤SPStartup/NSPStartup函數(shù)失敗。WSASYSCALLFAILURE(OSdependent)Systemcallfailure.當一個不應(yīng)該失敗的系統(tǒng)調(diào)用失敗時返回。例如,如果WaitForMultipleObjects()調(diào)用失敗,或注冊的API不能夠利用協(xié)議名字空間目錄。WSASYSNOTREADY(10091)Networksubsystemisunavailable.此錯誤由WSAStartup()函數(shù)返回,它表示此時WindowsSockets實現(xiàn)因底層用來提供網(wǎng)絡(luò)服務(wù)的系統(tǒng)不可用。用戶應(yīng)該檢查:是否
32、有合適的WindowsSocketsDLL文件在當前路徑中。是否同時使用了多個WinSock實現(xiàn)。如果有多于一個的WINSOCKDLL在系統(tǒng)中,必須確保搜索路徑中第一個WINSOCKDLL文件是當前加載的網(wǎng)絡(luò)子系統(tǒng)所需要的。查看WinSock實現(xiàn)的文檔以確保所有必須的部件都正確地安裝并配置好了。WSATRY_AGAIN(11002)Non-authoritativehostnotfound.此錯誤通常是在主機名解析時的臨時錯誤,它意味著本地服務(wù)器沒有從授權(quán)服務(wù)器接收到一個響應(yīng)。稍后的重試可能會獲得成功。WSAVERNOTSUPPORTED(10092)WINSOCK.DLLversionout
33、ofrange.當前的WinSock實現(xiàn)不支持應(yīng)用程序指定的WindowsSockets規(guī)范版本。檢查是否有舊的WindowsSocketsDLL文件正在被訪問。WSAEDISCON(10101)Gracefulshutdowninprogress.由WSARecv()和WSARecvFrom()函數(shù)返回,指示遠程方已經(jīng)初始化了一個“雅致”的關(guān)閉序列。WSA_OPERATION_ABORTED(OSdependent)Overlappedoperationaborted.因為套接字的關(guān)閉,一個重疊操作被取消,或是執(zhí)行了WSAIoctl()函數(shù)的SIO_FLUSH命令。以下英文解釋來自MSDN:
34、ErrorCodesThefollowingisalistofpossibleerrorcodesreturnedbytheWSAGetLastErrorcall,alongwiththeirextendedexplanations.Errorsarelistedinalphabeticalorderbyerrormacro.SomeerrorcodesdefinedinWINSOCK2.Harenotreturnedfromanyfunction-thesehavenotbeenlistedhere.WSAEACCES(10013)Permissiondenied.Anattemptwasm
35、adetoaccessasocketinawayforbiddenbyitsaccesspermissions.Anexampleisusingabroadcastaddressforsendtowithoutbroadcastpermissionbeingsetusingsetsockopt(SO_BROADCAST).WSAEADDRINUSE(10048)Addressalreadyinuse.Onlyoneusageofeachsocketaddress(protocol/IPaddress/port)isnormallypermitted.Thiserroroccursifanapp
36、licationattemptstobindasockettoanIPaddress/portthathasalreadybeenusedforanexistingsocket,orasocketthatwasntclosedproperly,oronethatisstillintheprocessofclosing.Forserverapplicationsthatneedtobindmultiplesocketstothesameportnumber,considerusingsetsockopt(SO_REUSEADDR).Clientapplicationsusuallyneednot
37、callbindatall-connectwillchooseanunusedportautomatically.Whenbindiscalledwithawild-cardaddress(involvingADDR_ANY),aWSAEADDRINUSEerrorcouldbedelayeduntilthespecificaddressiscommitted.Thiscouldhappenwithacalltootherfunctionlater,includingconnect,listen,WSAConnectorWSAJoinLeaf.WSAEADDRNOTAVAIL(10049)Ca
38、nnotassignrequestedaddress.Therequestedaddressisnotvalidinitscontext.Normallyresultsfromanattempttobindtoanaddressthatisnotvalidforthelocalmachine.Thiscanalsoresultfromconnect,sendto,WSAConnect,WSAJoinLeaf,orWSASendTowhentheremoteaddressorportisnotvalidforaremotemachine(e.g.addressorport0).WSAEAFNOS
39、UPPORT(10047)Addressfamilynotsupportedbyprotocolfamily.Anaddressincompatiblewiththerequestedprotocolwasused.Allsocketsarecreatedwithanassociatedaddressfamily(i.e.AF_INETforInternetProtocols)andagenericprotocoltype(i.e.SOCK_STREAM).Thiserrorwillbereturnedifanincorrectprotocolisexplicitlyrequestedinth
40、esocketcall,orifanaddressofthewrongfamilyisusedforasocket,e.g.insendto.WSAEALREADY(10037)Operationalreadyinprogress.Anoperationwasattemptedonanon-blockingsocketthatalreadyhadanoperationinprogress-i.e.callingconnectasecondtimeonanon-blockingsocketthatisalreadyconnecting,orcancelinganasynchronousreque
41、st(WSAAsyncGetXbyY)thathasalreadybeencanceledorcompleted.WSAECONNABORTED(10053)Softwarecausedconnectionabort.Anestablishedconnectionwasabortedbythesoftwareinyourhostmachine,possiblyduetoadatatransmissiontimeoutorprotocolerror.WSAECONNREFUSED(10061)Connectionrefused.Noconnectioncouldbemadebecausethet
42、argetmachineactivelyrefusedit.Thisusuallyresultsfromtryingtoconnecttoaservicethatisinactiveontheforeignhost-i.e.onewithnoserverapplicationrunning.WSAECONNRESET(10054)Connectionresetbypeer.Aexistingconnectionwasforciblyclosedbytheremotehost.Thisnormallyresultsifthepeerapplicationontheremotehostissudd
43、enlystopped,thehostisrebooted,ortheremotehostusedahardclose(seesetsockoptformoreinformationontheSO_LINGERoptionontheremotesocket.)Thiserrormayalsoresultifaconnectionwasbrokenduetokeep-aliveactivitydetectingafailurewhileoneormoreoperationsareinprogress.OperationsthatwereinprogressfailwithWSAENETRESET
44、.SubsequentoperationsfailwithWSAECONNRESET.WSAEDESTADDRREQ(10039)Destinationaddressrequired.Arequiredaddresswasomittedfromanoperationonasocket.Forexample,thiserrorwillbereturnedifsendtoiscalledwiththeremoteaddressofADDR_ANY.WSAEFAULT(10014)Badaddress.Thesystemdetectedaninvalidpointeraddressinattempt
45、ingtouseapointerargumentofacall.Thiserroroccursifanapplicationpassesaninvalidpointervalue,orifthelengthofthebufferistoosmall.Forinstance,ifthelengthofanargumentwhichisastructsockaddrissmallerthansizeof(structsockaddr).WSAEHOSTDOWN(10064)Hostisdown.Asocketoperationfailedbecausethedestinationhostwasdo
46、wn.Asocketoperationencounteredadeadhost.Networkingactivityonthelocalhosthasnotbeeninitiated.TheseconditionsaremorelikelytobeindicatedbytheerrorWSAETIMEDOUT.WSAEHOSTUNREACH(10065)Noroutetohost.Asocketoperationwasattemptedtoanunreachablehost.SeeWSAENETUNREACHWSAEINPROGRESS(10036)Operationnowinprogress
47、.Ablockingoperationiscurrentlyexecuting.WindowsSocketsonlyallowsasingleblockingoperationtobeoutstandingpertask(orthread),andifanyotherfunctioncallismade(whetherornotitreferencesthatoranyothersocket)thefunctionfailswiththeWSAEINPROGRESSerror.WSAEINTR(10004)Interruptedfunctioncall.Ablockingoperationwa
48、sinterruptedbyacalltoWSACancelBlockingCall.WSAEINVAL(10022)Invalidargument.Someinvalidargumentwassupplied(forexample,specifyinganinvalidleveltothesetsockoptfunction).Insomeinstances,italsoreferstothecurrentstateofthesocket-forinstance,callingacceptonasocketthatisnotlistening.WSAEISCONN(10056)Socketi
49、salreadyconnected.Aconnectrequestwasmadeonanalreadyconnectedsocket.SomeimplementationsalsoreturnthiserrorifsendtoiscalledonaconnectedSOCK_DGRAMsocket(ForSOCK_STREAMsockets,thetoparameterinsendtoisignored),althoughotherimplementationstreatthisasalegaloccurrence.WSAEMFILE(10024)Toomanyopenfiles.Tooman
50、yopensockets.Eachimplementationmayhaveamaximumnumberofsockethandlesavailable,eitherglobally,perprocessorperthread.WSAEMSGSIZE(10040)Messagetoolong.Amessagesentonadatagramsocketwaslargerthantheinternalmessagebufferorsomeothernetworklimit,orthebufferusedtoreceiveadatagramintowassmallerthanthedatagrami
51、tself.WSAENETDOWN(10050)Networkisdown.Asocketoperationencounteredadeadnetwork.Thiscouldindicateaseriousfailureofthenetworksystem(i.e.theprotocolstackthattheWinSockDLLrunsover),thenetworkinterface,orthelocalnetworkitself.WSAENETRESET(10052)Networkdroppedconnectiononreset.Theconnectionhasbeenbrokendue
52、tokeep-aliveactivitydetectingafailurewhiletheoperationwasinprogress.ItcanalsobereturnedbysetsockoptifanattemptismadetosetSO_KEEPALIVEonaconnectionthathasalreadyfailed.WSAENETUNREACH(10051)Networkisunreachable.Asocketoperationwasattemptedtoanunreachablenetwork.Thisusuallymeansthelocalsoftwareknowsnor
53、outetoreachtheremotehost.WSAENOBUFS(10055)Nobufferspaceavailable.Anoperationonasocketcouldnotbeperformedbecausethesystemlackedsufficientbufferspaceorbecauseaqueuewasfull.WSAENOPROTOOPT(10042)Badprotocoloption.Anunknown,invalidorunsupportedoptionorlevelwasspecifiedinagetsockoptorsetsockoptcall.WSAENO
54、TCONN(10057)Socketisnotconnected.Arequesttosendorreceivedatawasdisallowedbecausethesocketisnotconnectedand(whensendingonadatagramsocketusingsendto)noaddresswassupplied.Anyothertypeofoperationmightalsoreturnthiserror-forexample,setsockoptsettingSO_KEEPALIVEiftheconnectionhasbeenreset.WSAENOTSOCK(1003
55、8)Socketoperationonnon-socket.Anoperationwasattemptedonsomethingthatisnotasocket.Eitherthesockethandleparameterdidnotreferenceavalidsocket,orforselect,amemberofanfd_setwasnotvalid.WSAEOPNOTSUPP(10045)Operationnotsupported.Theattemptedoperationisnotsupportedforthetypeofobjectreferenced.Usuallythisocc
56、urswhenasocketdescriptortoasocketthatcannotsupportthisoperation,forexample,tryingtoacceptaconnectiononadatagramsocket.WSAEPFNOSUPPORT(10046)Protocolfamilynotsupported.Theprotocolfamilyhasnotbeenconfiguredintothesystemornoimplementationforitexists.HasaslightlydifferentmeaningtoWSAEAFNOSUPPORT,butisin
57、terchangeableinmostcases,andallWindowsSocketsfunctionsthatreturnoneofthesespecifyWSAEAFNOSUPPORT.WSAEPROCLIM(10067)Toomanyprocesses.AWindowsSocketsimplementationmayhavealimitonthenumberofapplicationsthatmayuseitsimultaneously.WSAStartupmayfailwiththiserrorifthelimithasbeenreached.WSAEPROTONOSUPPORT(
58、10043)Protocolnotsupported.Therequestedprotocolhasnotbeenconfiguredintothesystem,ornoimplementationforitexists.Forexample,asocketcallrequestsaSOCK_DGRAMsocket,butspecifiesastreamprotocol.WSAEPROTOTYPE(10041)Protocolwrongtypeforsocket.Aprotocolwasspecifiedinthesocketfunctioncallthatdoesnotsupportthes
59、emanticsofthesockettyperequested.Forexample,theARPAInternetUDPprotocolcannotbespecifiedwithasockettypeofSOCK_STREAM.WSAESHUTDOWN(10058)Cannotsendaftersocketshutdown.Arequesttosendorreceivedatawasdisallowedbecausethesockethadalreadybeenshutdowninthatdirectionwithapreviousshutdowncall.Bycallingshutdow
60、napartialcloseofasocketisrequested,whichisasignalthatsendingorreceivingorbothhasbeendiscontinued.WSAESOCKTNOSUPPORT(10044)Sockettypenotsupported.Thesupportforthespecifiedsockettypedoesnotexistinthisaddressfamily.Forexample,theoptionaltypeSOCK_RAWmightbeselectedinasocketcall,andtheimplementationdoesn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物理-福建省莆田市2025屆高中畢業(yè)班第二次教學(xué)質(zhì)量檢測試卷(莆田二檢)試題和答案
- 歷史-陜西省安康市2025屆高三下學(xué)期第二次質(zhì)量聯(lián)考(安康二模)試題和答案
- 除草布施工方案
- 廣東省肇慶市2024-2025年高中地理 農(nóng)業(yè)和工業(yè)練習(xí)評講教學(xué)實錄 新人教版必修2
- 個人瓷磚買賣合同范例
- 供貨茶葉合同范例
- 關(guān)于定金合同范例
- 公司合作加盟合同范例
- 構(gòu)建班級共同價值觀的策略計劃
- 學(xué)生課外閱讀推廣活動計劃
- 2024河南省科技館招聘23人歷年高頻500題難、易錯點模擬試題附帶答案詳解
- 2022年高級維修電工(三級)理論考試題庫(附答案)
- 中國艾滋病診療指南(2024版)解讀 2
- 中醫(yī)基礎(chǔ)理論題庫及答案 (一)
- 施工方案-15、建筑垃圾外運施工方案
- HG∕T 3642-2016 水處理劑 丙烯酸-2-甲基-2-丙烯酰胺基丙磺酸類共聚物
- QCT1165-2022汽油乘用車炭罐用空氣濾清器
- DL5714-2014火力發(fā)電廠熱力設(shè)備及管道保溫防腐施工技術(shù)規(guī)范
- 選擇性必修二《Unit 3 Food and Culture》單元課件及小結(jié)
- 實驗室廢液處理臺賬
- 2024年湖南省岳陽市中考數(shù)學(xué)一模試卷
評論
0/150
提交評論