adb是什麼? adb就是Android調試橋,很形象啊。 先來看adb原理的邏輯圖:
再來進行實際操作:我的pc的ip是192.168.1.102, 我的android手機的ip爲192.168.1.100
1. 在pc上執行:netstat -nao | findstr 5037
發現結果是空白。
2. 執行adb shell, 肯定是進不了任何shell啊, 然後執行:netstat -nao | findstr 5037
結果是:TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 3840
可見3840進程正在監聽5037端口, 這個進程實際上就是adb server
3. 打開android手機,執行adb connect 192.168.1.100, 請參考我之前的博文, 確保adb能連接上手機哈。
發現, 界面提示adb成功連接上了手機。
執行netstat -nao | findstr 5037, 居然仍然是:TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 3840
執行adb shell, 進入手機的android系統, 再次在pc的cmd中(非前面的shell中)執行netstat -nao | findstr 5037, 結果爲:
TCP 127.0.0.1:1571 127.0.0.1:5037 ESTABLISHED 4496
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 3840
TCP 127.0.0.1:5037 127.0.0.1:1571 ESTABLISHED 3840
表明,adb client和adb server建立tcp連接了。
4. 不需要退出上面的shell, 僅在另一個cmd中執行 netstat -nao | findstr 5555, 結果爲:
TCP 192.168.1.102:1559 192.168.1.100:5555 ESTABLISHED 3840
表明, adb server和adbd建立起了tcp連接。
5. 前面已經進入了手機的shell, 現在在shell中執行:netstat -nao | busybox grep 5555, 結果爲:
tcp 0 0 0.0.0.0:5555 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:5555 192.168.1.102:1559 ESTABLISHED
進一步證實, adb server和adbd建立起了tcp連接。
歸納:
adb client(pid:4496) <--->adb server(監聽5037端口, pid:3840)<--->adbd(監聽5555端口, pid:未顯示)
|<------------------------------- 在 pc 端 ------------------------------> | |<------------ 在手機端------------>|
其中, adb server作爲adb client的服務端, 而adbd又作爲adb server的服務端, 實際上就是下面這個意思:
兒子 <------------------------------> 爸爸<------------------------------------->爺爺
前面我們已經說過, 也可以利用數據線來進行連接, 這裏, 我就不過多再贅述了, 原理大體類似, 爲了讓大家更清晰, 我借鑑了網上的一幅圖, 這幅圖很強大, 真是太棒了:
轉至: https://blog.csdn.net/stpeace/article/details/24933813