2

好的,这是我的问题。我有一个 android 应用程序根据用户与 android 设备的交互将 UDP 数据包传输到 PC(一个侦听数据包的 java 程序)。为简单起见,假设这种情况正在发生——用户点击手机屏幕,它会发送一个带有用户点击点坐标的 UDP 数据包。侦听器程序接收并读取此数据包,并使用 输出接收到的字符串System.out.println()

现在,正在发生的事情是该程序对于前几个数据包运行良好。然后它停止工作,就像桌面上的侦听器程序不显示任何输出一样。现在,问题可能与传输有关,因为我在应用程序上有一个文本标签(用于测试目的),显示正在传输的内容,因此传输数据包肯定是正确构建的。但是我不知道如何理解这是发送数据(在android设备端)还是接收(在桌面端)的问题。如何找出问题所在并解决此问题?

4

2 回答 2

1

您使用的是本机代码还是 Java 类?我已经尝试了这两种方法,并且使用 NDK(即,作为从 Java 调用的 C 函数编写的套接字)我在服务器端看到了不稳定的行为,主要是由于线程问题。但是,使用 Java Socket 类我没有遇到问题。此外,如果您的 Android 应用程序是客户端,那应该不是问题。我还会使用 Wireshark 检查数据包是否到达 PC。

于 2012-08-27T19:53:07.757 回答
1

我主要使用 TCP 传输,我所做的所有 UDP 主要是复制粘贴 [:-)] 或 API

对于 TCP,在传输之后,我会抛出一个调试消息,这有助于我知道传输是否正确发生。但在这种情况下,您的 write 必须是blocking.

此外,您可以Packet Tracer在侦听器终端上使用 a 来确定它是否正确接收数据包。我喜欢的是WireShark(我认为它是 Ethereal 的一个分支)。它真的很容易使用。你告诉它监听哪个接口并给出一个过滤器,它会在数据包到来时列出它们。

但是,如果您使用的是 Windows 7,则需要管理员权限。

于 2012-08-27T07:04:04.963 回答