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