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とは異なるポートを報告します)。もしそうなら、それを克服するために私ができることはありますか?または、コードに何か問題がありますか?