Я реализовал простой сервер udp на моем устройстве Android. (SDK 1.5)
он работает нормально, когда я запускаю локальный клиент на телефоне и посылает через него триггер на мой сервер.
но когда я пытаюсь получить вызов udp с внешнего сервера на мой телефон, он не работает.
уже убедитесь, что внешний сервер не заблокирован брандмауэром и отправляет триггер udp на нужный порт, который прослушивает мой телефон.
Я использовал natstat на телефоне и проверил, действительно ли телефон прослушивает его локальный ip и порт, на который я его установил.
вот мой код сервера: (на устройстве)
// server will listen to one client
try
{
Thread udpServerThread = new Thread()
{
@Override
public void run()
{
try
{
// Retrieve the ServerName
InetAddress serverAddr = InetAddress
.getByName("localhost");
Log.d("UDP", "S: Connecting...");
// Create new UDP-Socket
socket = new DatagramSocket(SERVERPORT,serverAddr);
byte[] buf = new byte[17];
// * Prepare a UDP-Packet that can contain the data we
// * want to receive
DatagramPacket packet = new DatagramPacket(buf,
buf.length);
Log.d("UDP", "S: Receiving...");
// wait to Receive the UDP-Packet
socket.receive(packet);
Log.d("UDP", "S: Received: '"
+ new String(packet.getData()) + "'");
acceptedMsg=new String(packet.getData());
notifyService(acceptedMsg);
Log.d("UDP", "S: Done.");
} catch (Exception e)
{
Log.e("UDP", "S: Error", e);
}
}
};
udpServerThread.start();
}
catch (Exception E)
{
Log.e("r",E.getMessage()) ;
}
так, как я уже сказал, когда я пытаюсь сделать это с локальным клиентом (отдельным потоком), который отправляет триггер udp, он работает нормально, но когда я беру эту реализацию клиента и помещаю ее на внешний реальный сервер
после отправки UDP телефон не отвечает на него.
есть идеи?
спасибо,
луч.