android項目最近開始用到socket通訊,而2個模擬器之間通訊需要藉助ADB實現,這裡瞭解下ADB。
ADB是什麼:
ADB的全稱為Android Debug Bridge,就是調試橋的作用,藉助這個工具,我們可以管理裝置或手機模擬器的狀態。個人理解就是可以在pc上通過命令列查看和管理安卓裝置,例如串連到電腦的安卓手機等。比較方便的是可以直接通過命令列操作。
常見操作:
(1)快速更新裝置或手機模擬器中的代碼,如應用或Android系統升級;
(2)在裝置上運行Shell命令;
(3)管理裝置或手機模擬器上的預定連接埠;
(4)在裝置或手機模擬器上複製或粘貼檔案。
詳細參考:Android的ADB工具使用
因為需要在2個模擬器之間通訊,這裡我們啟動2個模擬器,通過adb查看2個模擬器的狀態和IP連接埠地址等資訊。
在命令列中直接輸入“adb”命令提示無法識別,來到SDK的Tools檔案夾下,發現存在一個“adb_has_moved.txt”檔案提示adb被移除了,百度後發現該adb在新版本中已經移動到了“platform-tools”目錄下,果然在platform-tools目錄下找到了該adb,在環境變數Path中加入該路徑。
然後命令列中執行adb命令就可以識別了:
OK 先一步使用ADB查看模擬器當前配置狀況
啟動2個模擬器api版本都是10(plat版本2.3.3) 5554運行socket服務端 5556運行socket用戶端
首先進入emulator5554裝置的命令控制台
在命令列中輸入如下指令
adb –s emulator-5554 shell
getprop
在結果中找到以下2行“
[net.eth0.dns1]: [10.0.2.3]
[net.gprs.local-ip]: [10.0.2.15]
exit退出shell
如上繼續查看emulator5556的ip配置會發現二者完全相同,那麼如何進行通訊呢
Android系統為實現通訊將PC機IP設定為了10.0.2.2,自身為10.0.2.15/127.0.0.1,所有安卓虛擬機器預設是可以通過10.0.2.2本機連網。
如果需要修改dns可以執行
setprop net.dns1 192.168.0.1
那麼IP如何修改呢?二者的IP完全相同是無法通訊的:
據資料顯示可以通過件連接埠映射到本機間接實現 (參考 PC電腦和Android模擬器訪問及模擬器之間tcp/udp通訊 )
1. 運行模擬器
2. 開啟window 命令列
5554是模擬器的連接埠,執行之後會進入android console
telnet 127.0.0.1 5554
或者
telnet localhost 5554
3. 在console下執行:
redir add udp :連接埠號碼:連接埠號碼
或
redir add tcp :連接埠號碼:連接埠號碼
例如:
redir add tcp:8888:8888
其中,第一個連接埠號碼是PC連接埠,第二個是模擬器連接埠。(連接埠映射)
執行此命令之後,會把PC8888 連接埠接收的資料轉到模擬器的8888連接埠
redir :連接埠定向指令
add :添加
tcp/udp:表示連接埠類型tcp、udp
通訊代碼案例參考:
http://blog.163.com/fanning_7213/blog/static/2496505201137101721665/