進行TCP通訊的時候,在本機上啓動兩個模擬器,本機(PC)和模擬器時發現兩個模擬器的IP地址都是徹底同樣的,因此要實現兩個模擬器之間的通訊,使用模擬器的IP地址是辦不到的。必須進行端口映射。socket
模擬器提供了一個特殊的IP,此IP的地址爲10.0.2.2,此IP地址能夠說等同於PC本機的IP地址127.0.0.1 。因此,經過此特殊IP地址,實現PC本機與模擬器的通訊是沒有問題。tcp
首先 ,運行模擬器在命令行adb –s emulator -模擬器 forward tcp:端口號 tcp:端口號(例如:adb –s emulator-5554 forward tcp:8080 tcp:8090)spa
PC-SERVER:ServerSocket server = new ServerSocket(8080);命令行
模擬器-CLIENT:Socket socket = new Socket("10.0.2.2", 8090);server
接下來是如何在兩個模擬器之間進行通訊:一樣的先進行端口映射:adb –s emulator -模擬器 forward tcp:端口號 tcp:端口號(先運行模擬器).代碼以下:ci
adb –s emulator-5554 forward tcp:8080 tcp:8081ast
模擬器(5554)-SERVER:ServerSocket server = new ServerSocket(8080);請求
模擬器(5556)-CLIENT:Socket socket = new Socket("10.0.2.2", 8081);通信
由於模擬器5556鏈接的地址10.0.2.2:8080至關於本機的127.0.0.1:8080,因爲進行了端口映射本機IP8080上的鏈接請求都映射到5554:8081上,所以模擬器5556的請求會發送到5554上.db