0

我的 Android 应用程序在 s.receive(p) 处停止,因为它没有收到任何数据包。

我让 X-Plane 将数据包发送到与我想要接收这些数据包的 Android 平板电脑相同的 IP 地址中的随机端口 49059。这是因为它们正在运行相同的连接。X-Plane 使用端口 49000 发送数据包,使用端口 49001 接收数据包。

我无法弄清楚出了什么问题。我无法在 Android 平板电脑上使用 3G,这是我可以测试的唯一互联网连接。此外,清单中启用了所有互联网和 wifi 权限。有任何想法吗?这是代码:

byte[] bar = new byte[1024];
DatagramPacket p = new DatagramPacket(bar, bar.length);
DatagramSocket s = new DatagramSocket(49059);
s.setSoTimeout(30000);
s.receive(p);
4

1 回答 1

0

如果您有wireshark,请尝试检查数据包是否由X-Plane 发送。

此外,您说您的“应用程序冻结”并不一定意味着没有收到数据包。我不知道您要做什么,但也许您正在 UI 线程上执行接收/发送操作,这会导致应用程序冻结。

尝试在s.receive(p)下面的类似之后放置一个日志,并检查它是否出现在 LogCat 中。 Log.d("MYACT","Packet received");

于 2012-05-24T21:11:57.123 回答