gpt4 book ai didi

android - udp转发到模拟器

转载 作者:行者123 更新时间:2023-11-29 01:11:37 54 4
gpt4 key购买 nike

我的主机上有一个 java 应用程序将 UDP 数据包发送到端口:例如8888.
我有一个 Android 应用程序可以监听此端口并仅显示数据。

这在真实设备(通过 WiFi 连接到同一网络)上运行良好,但我无法在模拟器中运行。

一些信息:

  • 我正在使用 Ubuntu 16.10
  • 我已经停用了 Ubuntu 防火墙
  • 通过 IntelliJ 启动 Android 模拟器应用
    • 模拟器的 API 级别为 25
  • 我按照 Android 中的说明使用 udp 端口​​转发文档:
    telnet 本地主机 5554
    redir 添加 udp:8888:8888

Android 应用程序中连接端口的代码:

final DatagramSocket udpSocket = new DatagramSocket(8888);

这是发送广播的服务器的(伪)代码:

String data = "test";
InetAddress broadcastAddress = Inet4Address.getByName("255.255.255.255");
DatagramSocket udpSocket = new DatagramSocket();
udpSocket.setBroadcast(true);
byte[] dataBytes = data.getBytes();
DatagramPacket datagramPacket = new DatagramPacket(dataBytes, dataBytes.length, broadcastAddress, 8888);
udpSocket.send(datagramPacket);

我错过了什么?

最佳答案

由于 Android 中的错误,这不起作用:Issue#207602: Emulator does not redirect UDP packets

解决方法:

  • 在终端中:
    • 获取您的 avds 列表:
      模拟器-list-avds
    • 使用其中一个 avds 启动模拟器并添加 -engine classic 参数:
      emulator -avd Nexus_6_API_25_GER -engine classic
  • 然后在 Android Studio 中启动您的应用:
    Run - Run 'app' 并连接到您刚刚启动的模拟器
  • 在终端(可能是另一个终端)中设置 udp 端口​​重定向:
    telnet 本地主机 5554
    redir 添加 udp:8888:8888
  • 注意:我在使用 -engine classic 时在较新的模拟器中发现了一些问题(像素启动器崩溃),但我的应用程序运行正常并且它从主机收到了 UDP 数据包

关于android - udp转发到模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42608473/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com