android中的udp连接无法接收数据包

时间:2012-10-02 21:00:59

标签: android sockets udp

我正在尝试在服务器和Android设备之间建立和udp连接。我写了服务器和android客户端部分。当我在我的计算机localhost上启动服务器时,服务器和模拟器都可以很好地相互通信。但是,当我在云中启动服务器时,模拟器可以将udp数据包发送到服务器但无法接收任何数据包。

所以,首先我想到的是,可能存在一些阻止数据包到达模拟器的路由问题。因此,我使用了3g连接的手机(三星galaxy s2,ICS)。然而,同样的事情又发生了。我的手机可以发送udp数据包,但无法接收任何数据包。

然后,我想也许我的云计算机无法发送数据包。所以,我用wireshark嗅探了数据包,发现它确实发送/接收了udp数据包。

我在stackoverflow中已经阅读了很多关于这个问题的问题,但我无法提出解决方案。也许你们帮助我了。这是服务器和客户端udp发送/接收我工作的部分。如果您需要更多信息,我愿意给予。

提前致谢。

服务器(无需编写听力部分,因为没有问题)

ClientIPAddress = IncomingPacket.getAddress();
ClientPort = IncomingPacket.getPort();
OutToClientSocket = new DatagramSocket();
DatagramPacket PacketToClient = new DatagramPacket(sendBuffer, sendBuffer.length,     ClientIPAddress, ClientPort);
OutToClientSocket.send(PacketToClient);

客户(仅收听部分)

ServerIP = InetAddress.getByName(MachineName);
DatagramPacket IncomingPacket = new DatagramPacket(buf, buf.length);
MySocket.receive(IncomingPacket);
buf = IncomingPacket.getData();
...

1 个答案:

答案 0 :(得分:0)

感谢@EJP解决了我的问题。我使用datagramsocket监听数据包并使用另一个发送数据包。你必须为这两个操作使用1个套接字。