0

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

4

1 に答える 1

0

コードが正常に動作していることが判明し、3G サービス プロバイダーが一部の UDP パケットをブロックしていました。

于 2015-04-13T17:17:04.727 に答える