Получение UDP-пакетов на Android

Я пытаюсь постоянно отправлять и получать пакеты UDP между приложением Android и сервером.

Есть ли способ сделать это?

Мой текущий сетевой код (работающий в потоке) показан ниже. Клиент подключен через 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). Если да, то могу ли я что-нибудь сделать, чтобы преодолеть это? Или я что-то не так делаю в своем коде?


person aberaud    schedule 02.09.2012    source источник
comment
Код сервера представляет собой пример Twistedmatrix Echo: twistedmatrix.com/documents/ текущий/ядро/howto/udp.html#auto1   -  person aberaud    schedule 02.09.2012
comment
Сервер печатает: ›получил «Привет от клиента» от 213.55.xx.xx:6854   -  person aberaud    schedule 02.09.2012
comment
просто мысль - но будет ли это иметь какое-либо отношение к разрешениям Android?   -  person stephendwolff    schedule 07.07.2013


Ответы (1)


Выяснилось, что код работает нормально, поставщик услуг 3G блокирует некоторые UDP-пакеты.

person aberaud    schedule 13.04.2015