假设您有三部 Android 手机(A、B 和 C)连接到同一个接入点。所以每部手机都有不同的IP地址。例如:
- A 位于 192.168.1.50
- B 位于 192.168.1.60
- C 位于 192.168.1.70
在每一个中,我都安装了相同的应用程序。在这个应用程序中有两个UDP套接字:
DatagramSocket sendSocket = new DatagramSocket();
DatagramSocket receiveSocket = new DatagramSocket(55000);
由于每部电话都使用不同的 IP 地址,因此每部电话都可以向其他所有电话发送数据包。例如,要从 B 向 A 发送数据包:
InetAddress address = InetAddress.getByName("192.168.1.50");
byte[] data = "Hello".getBytes();
DatagramPacket sendPacket = new DatagramPacket(data, data.length, address, 55000);
sendSocket.send(sendPacket);
现在的问题是:在同一台机器上使用三个模拟器开发和调试此应用程序的最佳方法是什么,以便在模拟器中运行它的代码几乎与在真实设置上运行它的代码相同?
我做过的尝试:
- 使用此处提供的代码,我在同一台机器上启动了两个模拟器并打印了它们的 IP 地址,为两个模拟器获得了相同的 IP 地址
fe80::5054:ff:fe12:3456%eth0
:所以死路一条。 - 仅启动了两个仿真器,每个仿真器都位于接收和发送套接字的特定和不同端口上。这种方法效果很好,但它不适用于更多机器,因为重定向和部署开始变得相当麻烦和复杂。更不用说我必须使用 10.0.2.15 和 10.0.2.2 IP 地址才能使其正常工作。