1
我的Android設備上實現了簡單的udp服務器(sdk 1.5) 當我在電話上運行本地客戶端時,它可以正常工作,並通過觸發器發送到我的服務器。UDP服務器不接受來自外部的呼叫
但是當我嘗試從外部服務器到我的手機的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之後,我將這個客戶端實現並放到外部的真實服務器上, ,手機不響應它。
有什麼想法嗎?
謝謝,
ray。
的感謝!它的工作,但仍不能明白你的意思是由INADDR_ANY? – rayman 2010-05-12 13:50:45
INADDR_ANY是IPv4通配符地址,將套接字綁定到INADDR_ANY相當於綁定到所有系統的地址。 – Hasturkun 2010-05-12 14:18:09