0

我正在尝试在服务器和 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();
...
4

1 回答 1

0

感谢@EJP,我已经解决了我的问题。我正在使用数据报套接字来监听数据包并使用另一个数据包来发送数据包。您必须为这两个操作使用 1 个套接字。

于 2012-10-04T17:42:02.817 回答