找回密码
 快速注册

QQ登录

只需一步,快速开始

查看: 5736|回复: 0

socket编程里的10049错误解析

[复制链接]
微言 发表于 2011-10-4 17:09:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?快速注册

×
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端口号)而产生。
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

快速回复 返回顶部 返回列表