开发可与模拟器或电话配合使用的网络应用程序的最佳方法

时间:2012-04-24 23:33:19

标签: android networking

想象一下,您有三个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);

现在的问题是:在同一台机器上使用三个仿真器开发和调试此应用程序的最佳方法是什么,这样在仿真器中运行它的代码几乎与在一个机器上运行它的代码相同真正的设置?

尝试我做了:

  • 使用提供的代码here我在同一台机器上启动了两个仿真器并打印了它们的IP地址,为两个仿真器获取了相同的IP地址:fe80::5054:ff:fe12:3456%eth0。所以死路一条。
  • 仅启动两个仿真器,每个仿真器位于接收和发送套接字的特定端口和不同端口上。这种方法工作正常,但它不能用于更多的机器,因为重定向和部署开始变得相当麻烦和复杂。更不用说我将使用10.0.2.15和10.0.2.2 IP地址来实现它。

1 个答案:

答案 0 :(得分:0)

我没有一个好主意,这是一种解决方法,但你可以创建两个虚拟机(我使用VirtualBox用于虚拟机,它是免费的),放入Linux(也许{{3在它们上面,安装SDK并将代码放在它们上面进行测试。

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