94
技術社區[雲棲]
多個Android模擬器之間如何進行通信
Android模擬器的網絡配置和普通的手機不同,每個模擬器都自動分配為10.0.2.15的IP,既無法直接和外部通信,同一個PC上的多個模擬器之間也無法直接進行通信。本章簡單介紹一下模擬器的網絡布局,和如何通過將端口進行重定向來實現模擬器之間的通信。的通信也要通過一個網絡的中轉才能完成
首先看一下Emulator的網絡配置圖
從圖中我們看出每個模擬器的IP都是10.0.2.15,而它所運行在的PC機的IP地址是10.0.2.2,我們就可以通過PC來打開缺口。
比如我們把模擬器M1的端口51000暴露給其他模擬器,那麼可以通過下麵的命令來
telnet localhost 5444
在登錄的界麵中輸入下麵的命令
redir add tcp:50000:51000
執行成功以後,我們就可以通過連接 10.0.2.2:50000端口來轉接到M1的51000端口。
比如我們進行簡單的socket連接如下,
M1作為服務器監聽在51000端口:
ServerSocket server = new ServerSocket();
SocketAddress saEndPoint = new InetSocketAddress("10.0.2.15", 51000);
Log.d(TAG, "Server bind endpoint :" + saEndPoint);
server.bind(saEndPoint);
M2作為客戶端去連接M1
Socket clientSocket = new Socket();
clientSocket.connect(new InetSocketAddress("10.0.2.2", 50000), 1000);
如果實現時沒有什麼錯誤的話,就可以成功連接了。
最後更新:2017-04-02 22:16:36