PC电脑和Android模拟器访问及模拟器之间TCP/UDP通信

Android系统为实现通信将PC电脑IP设置为10.0.2.2,自身为10.0.2.15/127.0.0.1。然而PC电脑并没有为Android模拟器系统指定IP,所以PC只能通过端口重定向来实现和Android模拟器的通信。

 

PC电脑和Android模拟器系统之间通信

1、运行模拟器

2、打开命令行,执行:

telnet localhost 5554

5554是模拟器的端口(位于Android模拟器窗口标题栏)

3、在命令行下执行:

格式:redir add :端口>:< 模拟器端口 >

例如:redir add udp:8888:8888  

     redir add tcp:8888:8888

执行此命令之后,会把PC 8888端口接收到的tcp/udp数据转到模拟器的8888端口。

 

两个Android模拟器系统之间通信

第一种方法:使用redir(验证可行)

1、启动模拟器emulator-5554emulator-5556

2、打开命令行执行

telnet localhost 5554

连接到模拟器5554

3、成功连接后,继续执行:

redir add tcp:5000:6000PC端口5000绑定到模拟器5554的端口6000上。

4、此时模拟器5556通过向PC电脑端口5000(即地址:10.0.2.2:5000)发送tcp/udp数据包跟模拟器5554通信。

5、同理根据步骤23来实现PC电脑对模拟器5556的端口转发。

添加成功后,我们可以用redir list命令来列出已经添加的映射端口,redir del可以进行删除。

相信只要理解了PC电脑和Android模拟器系统之间通信,便知道怎么实现多个模拟器之间通信。


第二种方法:使用adb forward(验证可行)

1、启动模拟器emulator-5554emulator-5556

2、打开命令行执行

adb -s emulator-5554 forward tcp:8888 tcp:9999

PC上的8888端口映射到模拟器55549999端口上。

3、成功执行后:

模拟器(5554)-SERVER

ServerSocket server = new ServerSocket(9999);

模拟器(5556)-CLIENT

Socket socket = newSocket("10.0.2.2", 8888);

 

因为模拟器5556连接的地址10.0.2.2: 8888相当于本机的127.0.0.1: 8888,由于进行了端口映射本机8888上的连接请求都映射到5554: 9999,因此模拟器5556的请求会发送到5554.

你可能感兴趣的:(android)