【问题标题】:PC server, Android client. UDP. Client does not receive packets from serverPC服务器,安卓客户端。 UDP。客户端没有收到来自服务器的数据包
【发布时间】: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


【解决方案1】:

编辑:

我能够让它工作!所以 UDP 可以在 Android 上双向工作! 问题是winsock2上的select第一个参数未使用,而在linux\Android上它被使用并称为nfds。将 NULL 发送到该参数(就像我在 winsock2 中所做的那样),基本上使 select 始终返回 0。

感谢 fge 的帮助。

【讨论】:

  • 你是如何连接你的安卓设备和电脑的?是通过wif还是usb系绳?如果是通过 wifi 是 wifi 系绳吗?
  • Zak,PC 已通过 LAN 连接到路由器。电话只是使用连接到同一路由器的 WiFi。任何有效的 TCP\IP 网络都可以。
【解决方案2】:

我想知道您是否会在 udp 数据包接收 for android 主题上发布指向源代码的链接,有很多问题没有简单的答案。我自己找不到一个简单的 udp 数据包从 pc 发送到 android 的程序。

【讨论】:

    猜你喜欢
    • 2017-07-23
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2020-06-22
    • 2012-01-04
    • 1970-01-01
    相关资源
    最近更新 更多