2

假设您有三部 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 地址才能使其正常工作。
4

1 回答 1

0

我没有一个好主意,这是一种解决方法,但是您可以创建两个虚拟机(我使用VirtualBox作为虚拟机,它是免费的),将 Linux(可能是Ubuntu)放在它们上面,安装 SDK 并放入你的代码在那里测试它。

更好的主意:创建多个 AVD。在每一个上调试您的应用程序。只是(在Eclipse中)F11,退出。关闭 AVD。启动其他 AVD。对每个 AVD 重复。准备好后,启动它们并从模拟器上的应用程序菜单启动应用程序。

于 2012-04-24T23:39:09.070 回答