局域網內經過無線實現android設備的socket通訊

咱們就用最簡單的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)上。實現了兩個模擬器之間的網絡通訊功能。

相關文章
相關標籤/搜索