2013-11-24 34 views
2

我想發送和接收數據報套接字,但我收到異常java.net.BindException: Cannot assign requested address。我通過了我想要通信的正確的服務器ipaddress並修正了端口號。異常:java.net.BindException:不能分配請求的地址

try { 
    SocketAddress sockaddr = new InetSocketAddress("203.100.77.54", 8000); 
    DatagramSocket sock = new DatagramSocket(sockaddr); 
    DatagramPacket pack = new DatagramPacket(bData, bData.length); 
    sock.send(pack); 
} catch (FileNotFoundException fnfe) { 
    Log.e(LOG_TAG, "FileNotFoundException"); 
} catch (SocketException se) { 
    Log.e(LOG_TAG, "SocketException"); 
} catch (UnknownHostException uhe) { 
    Log.e(LOG_TAG, "UnknownHostException"); 
} catch (IOException ie) { 
    Log.e(LOG_TAG, "IOException"); 
} 

請幫幫我。

回答

0

嘗試這樣

String messageStr = "Hello Android!"; 
int server_port = 8000; 
DatagramSocket s = new DatagramSocket(); 
InetAddress local = InetAddress.getByName("203.100.77.54"); 
int msg_length = messageStr.length(); 
byte[] message = messageStr.getBytes(); 
DatagramPacket p = new DatagramPacket(message, msg_length, local, server_port); 
s.send(p); 
+0

試試吧爲什麼?單純的代碼不是答案。你必須解釋。 – EJP

2

DatagramSockets不與目標地址創建。它們使用它們自己的本地綁定地址(或無)創建,這會在首次使用時導致默認綁定。目標地址在構造DatagramPacket時指定,或者在connect()方法中指定。

+0

請在這裏給一些示例代碼 – android

+0

爲什麼?我寫的什麼部分你不明白? – EJP

相關問題