咱們就用最簡單的socket編程吧,一個作client端一個server端。而後分析一下有幾種鏈接狀況:android
ANDROID與PC : android與android: 這兩個是最簡單的,不須要端口重定向,在無線網內確定都有ip的直接socket端加上ip,端口,而後server.accept()便可。編程
AVD與PC: 因爲模擬器提供了一個特殊的地址,10.0.2.2,這個就相似於PC上面的127.0.0.1,因此經過這個特殊的地址就能夠實現AVD與PC的通訊。考慮兩種可能:網絡
1: AVD爲client端,PC爲server端:socket
PC: serverSocket server = new serverSocket(7100);tcp
AVD: Socket socket = new Socket("192.168.1.3",7100)或者Socket socket = new Socket("10.0.2.2",7100) ;spa
2: PC爲client端,AVD爲server端:先進行端口映射,把本機端口TCP/6100映射到模擬器TCP/7100端口。server
adb –s emulator-5554 forward tcp:6100 tcp:7100 (你的模擬器爲5554)ip
而後再寫程序:原理
AVD:ServerSocket server = new ServerSocket(7100);cli
PC:Socket socket = new Socket("127.0.0.1", 6100);
AVD與AVD: 5554爲server端,5556爲client端,5556鏈接到5554的7100端口,一樣也要先進行端口映射。adb –s emulator-5554 forward tcp:6100 tcp:7100
端口映射成功後,再進行下面的實驗。
5554:ServerSocket server = new ServerSocket(7100);
5556:Socket socket = new Socket("10.0.2.2", 6100);
原理說明:模擬器(5556)經過鏈接10.0.2.2:6100,至關於鏈接本機(PC)的127.0.0.1:6100,因爲本機IP的6100端口進行過端口映射,映射到模擬器(5554)的7100端口。因此,來自模擬器(5556)的鏈接請求會發送到模擬器(5554)上。實現了兩個模擬器之間的網絡通訊功能。