0
我嘗試在Android應用程序和服務器之間連續發送和接收UDP數據包。在Android上接收UDP數據包
有什麼辦法可以做到這一點嗎?
我的當前網絡代碼(運行在一個線程中)如下所示。客戶端通過3G連接。端口配置的客戶端是1088.
服務器收到時僅向客戶端回送數據包。 服務器從客戶端正確接收數據包,但客戶端沒有收到任何迴應。
InetAddress serverAddr = InetAddress.getByName(SERVERIP);
Log.d(TAG, "S: Connecting...");
DatagramSocket socket = new DatagramSocket();
DatagramSocket receive_socket = new DatagramSocket(SERVERPORT, InetAddress.getByName("0.0.0.0"));
while(running) {
DatagramPacket packet_send = new DatagramPacket(msg, msg.length, serverAddr, SERVERPORT);
Log.d(TAG, "C: Sending: '" + new String(msg) + "'");
socket.send(packet_send);
// Prepare a UDP-Packet that can contain the data we want to receive
DatagramPacket packet = new DatagramPacket(buf, buf.length);
Log.d(TAG, "S: Receiving...");
// Receive the UDP-Packet
receive_socket.receive(packet);
Log.d(TAG, "S: Received: '" + new String(packet.getData()) + "'");
synchronized (this) {
wait(500);
}
}
我懷疑3G連接是NAT(服務器報告一個不同於1088的端口)。 如果是這樣,我能做些什麼來克服它? 或者我的代碼有什麼問題嗎?
服務器代碼是Twisted UDP Echo示例:http://twistedmatrix.com/documents/current/core/howto/udp.html#auto1 – aberaud
服務器打印:>從213.55.xx接收到'來自客戶端的Hello' .xx:6854 – aberaud
只是一個想法 - 但它會與android權限有關嗎? – stephendwolff