2012-03-05 50 views
0

我需要從客戶端更改主機的IP地址。 我使用UDP命令和一個MulticastSocket來獲取該主機的IP地址(currentIp)並使用該IP地址成功建立TCP連接。 要更改此主機IP地址的命令需要一個DatagramSocket,因爲我需要首先獲取主機設備MAC地址以包含在更改IP地址命令中。一旦TCP連接是由我關閉了和MulticastSocket UDP套接字,所以我可以打開DatagramSocket的,但出現以下錯誤:如何修復BindException:無法分配請求的地址?

java.net.BindException: Cannot assign requested address: Cannot bind

有什麼我需要設法得到一個DatagramSocket套接字之前做,除了關閉了和MulticastSocket插座使用相同的端口號,還是我缺少別的東西?

DatagramSocket socket; 
private boolean ChangeIpAddress(String newIp) { 
    DatagramSocket socket; 
    try { 
     socket = new DatagramSocket(30718, InetAddress.getByName(currentIp)); 
    } catch (SocketException ex) { 
     ... 

回答

0

看起來您使用的IP地址不正確。你需要找到你etc/hosts或其定義。

+0

我使用的主機名實際上是IP地址字符串(currentIp)。 我相當肯定它是有效的,因爲它是TCP連接使用的相同IP地址。 – jacknad 2012-03-05 18:07:35

相關問題