【发布时间】:2012-01-22 20:10:43
【问题描述】:
我已经能够设置我的客户端/服务器程序,以便服务器在 PC 上运行,客户端在 Android 上运行。模拟器或设备。 服务器从客户端接收数据,但客户端不从服务器接收数据(所有UDP)。即使服务器从 recvfrom 获取客户端地址。 我想让它同时在 Android 模拟器和 Android 设备(我的手机)中工作。 我读到 Android 模拟器有一个虚拟路由器。当与服务器在同一台计算机上运行时,我尝试为客户端提供 ip 10.0.2.2,但这并没有解决问题。 客户端和服务器之间存在通信,这只是一方面。 有什么我想念的吗? 我在 Android 的 JNI\C++ 上使用 Berkley 套接字,在 PC 服务器上使用 winsock2。
【问题讨论】:
-
Windows 服务器是否有到您的 Android 设备的路由?
-
我通过数据包嗅探发现 Android 模拟器确实收到了 UDP 数据包。但由于它有一个虚拟路由器,这些数据包永远不会到达我在 Android 上的应用程序。我不确定设备。
-
你的安卓虚拟设备上有telnet吗?试试
telnet theserver anopenport看看连接是否建立。 -
我现在无法在模拟器上安装 telnet。因为我需要另一个帐户来允许我这样做。不过我可以在电话上试一下,因为我认为它也在那里连接。我相信我能够从客户端(Android)发送到服务器(PC),我也能够建立 TCP 连接。我认为,问题在于模拟器的虚拟路由器(以及设备上的等效路由器)没有将 UDP 数据包从服务器重定向到我的 android 客户端应用程序。
-
好的,所以这意味着路由是好的,这是一件少担心的事情。 ping 也可以吗?
标签: android udp java-native-interface client-server