微言 发表于 2011-10-4 17:09:05

socket编程里的10049错误解析

java.net.BindException: Cannot assign requested address: Datagram send failed

Cannot assign requested address.
The requested address is not valid in its context. This normally results from an attempt to bind to an address that is not valid for the local machine. This can also result from connect, sendto, WSAConnect, WSAJoinLeaf, or WSASendTo when the remote address or port is not valid for a remote machine (for example, address or port 0).
WSAEAFNOSUPPORT




也就是WSAEADDRNOTAVAIL (10049) 無法指定位址

錯誤發生的原因通常是指定了該部機器不應該有的位址。這裡的位址包含三個部分:網路協定、port和IP位址。

在柏克萊socket介面中,呼叫bind()時,若指定的IP位址不是本地機器該有的位址,就會出現這個錯誤。在呼叫connect()或sendto ()函式時,如果sockaddr_in結構中的sin_port填”0”,如此也會導致這個錯誤(在UNXI上是EADDRNOTAVAIL錯誤)。

對於WinSock函式,錯誤發生的時機和柏克萊socket函式類似,bind()和connect()都會導致這樣的錯誤。

對於WinSock函式,錯誤發生的時機和柏克萊socket函式類似,bind()和connect()都會導致這樣的錯誤。WinSock 1.1 版的規格書中並沒有提到bind()函式會導致WSAEADDRNOTAVAIL錯誤,不過根據我們測試的結果,bind()也會導致這樣的錯誤。


被请求的地址在它的环境中是不合法的。通常地在bind()函数试图将一个本地机器不合法的地址绑扎到套接字时产生。它也可能在 connect()、sendto()、WSAConnect()、WSAJoinLeaf()或WSASendTo()函数调用时因远程机器的远程地址 或端口号非法(如0地址或0端口号)而产生。
页: [1]
查看完整版本: socket编程里的10049错误解析