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