【发布时间】:2021-12-19 04:23:03
【问题描述】:
我的主机上有一个 java 应用程序,它将 UDP 数据包发送到一个端口:例如8888.
我有一个 Android 应用程序,它监听这个端口并简单地显示数据。
这适用于真实设备(通过 WiFi 连接到同一网络),但我无法在模拟器中使用它。
一些信息:
- 我正在开发 Ubuntu 16.10
- 我已停用 Ubuntu 防火墙
- 通过 IntelliJ 启动 Android 模拟器应用程序
- 模拟器的 API 级别为 25
- 我使用 udp 端口转发,如 Android 文档中所述:
telnet localhost 5554 redir add 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);
我错过了什么?
【问题讨论】:
-
为什么使用 5554?
-
问题中的 Android 文档链接中对此进行了说明。
标签: android udp android-networking