好的,所以这是我的问题。我有一个Android应用程序,基于用户与Android设备的交互,将UDP数据包传输到PC(一个侦听数据包的java程序)。为了简单起见,假设发生了这种情况 - 用户点击手机的屏幕,它会发送一个UDP数据包,其中包含用户点击的点的坐标。侦听器程序接收并读取此数据包,并使用System.out.println()
输出收到的字符串。
现在,正在发生的事情是该程序适用于前几个数据包。然后它停止工作,就像在桌面上的监听器程序不显示任何输出。现在,问题可能在于传输,因为我在应用程序上有一个文本标签(用于测试目的),显示正在传输的内容,因此传输数据包肯定是正确构建的。但我不知道如何理解这是发送数据(在Android设备端)或接收(在桌面端)的问题。我怎样才能找出问题并解决这个问题?
答案 0 :(得分:1)
我主要使用TCP传输,我所做的所有UDP主要是Copy-Paste [:-)]或使用API
对于TCP,在传输之后,我抛出一条调试消息,这有助于我知道传输正常发生。但在这种情况下,您的写作必须是blocking
。
此外,您可以在侦听终端上使用Packet Tracer
来确定它是否正确接收数据包。我喜欢的是WireShark
(我认为它是Ethereal的一个分支)。它真的很容易使用。你告诉它要监听哪个接口并给出一个过滤器,它会在它们到来时列出数据包。
但是,如果您使用的是Windows 7,则需要管理员权限。
答案 1 :(得分:1)
您使用的是本机代码还是Java类?我已经尝试了两种方法,并且使用NDK(即从Java调用C函数编写的套接字)我在服务器端看到了不稳定的行为,主要是由于线程问题。但是,使用Java Socket类我没有遇到过问题。此外,如果您的Android应用程序是客户端,那应该不是问题。我还会使用Wireshark检查数据包是否到达PC。