Я пишу простое приложение для мобильных телефонов (используя j2me) с взаимодействием клиент-сервер с использованием протокола дейтаграмм. Мобильное приложение отправляет текст на сервер, и сервер выводит этот текст на стандартный вывод. Вот код для отправки дейтаграмм (с мобильного телефона):
String ip;
String port;
String msg;
//Loading ip, port and msg from the user input, I won't write it here, 'cause it
//does not matter
//Below is a simple code snippet for sending msg to the ip:port address
connection = (DatagramConnection) Connector.open(
"datagram://" + ip + ":" + port);
Datagram datagram = connection.newDatagram(msg.getBytes(),
msg.getBytes().length);
connection.send(datagram);
Вот код для получения дейтаграмм (с ПК):
DatagramSocket s = new DatagramSocket(7777);
DatagramPacket p = new DatagramPacket(new byte[1024], 1024);
s.receive(p);
System.out.println(new String(p.getData()));
Итак, когда я запускаю первый фрагмент кода (для отправки дейтаграмм) с помощью эмулятора, все работает нормально: сервер успешно принимает и печатает дейтаграммы. Но когда программа для отправки дейтаграмм запускается с мобильного телефона, дейтаграммы не доходят до сервера.
При тестировании программы через эмулятор IP-адресом был мой локальный сетевой IP-адрес, а при тестировании через реальный мобильный телефон IP-адрес брался из ссылки http://www.whatismyip.com/. При использовании прежнего IP для тестов эмулятора дейтаграммы также не доходят до сервера. Порт всегда был установлен на 7777.
Итак, могу ли я решить эту проблему?