[Android] Android 學習筆記:讓外部電腦可以連到模擬器內的網頁伺服器

[Android] Android 學習筆記:讓外部電腦可以連到模擬器內的網頁伺服器

最近有個需求,想要在模擬器裡面執行 Remote Web Desktop

然後讓外面的電腦可以連到 Remote Web Desktop 的網頁~

Android_emulator_port_forwarding  

 

要做到這件事,看起來好像不難,

只要先將模擬器那台電腦的 Port forward 到模擬器上的 Port 上,應該就可以了~

這方面可以參考 Android Developers: Using the Android Emulator

下面是簡單的步驟說明~

 

1. 開啟模擬器,並取得模擬器的 port

先看模擬器視窗上的文字,通常是像 5554:AVDNameXXX 之類的東西~

這個 5554 就是模擬器在本機電腦上的 port~

如果你開了不只一個模擬器,可能就會看到其他的像是 5555:AVDNameYYY 等等~

port_2  

 

2. 使用 telnet 連到模擬器

基本上就是 telnet 到步驟一拿到的 port 去,例如:

telnet localhost 5554

連進去後可以看到如下的畫面:

port_3  

 

3. 下 redir 指令將本機的 port 轉向到模擬器上

假設我想將本機的 port 12345 轉向至模擬器內的 port 8999,可以這麼寫:

redir add tcp:12345:8999

port_4  

 

基本上做完上面的步驟,就已經可以在本機電腦 A 上,

瀏覽 http://localhost:12345 來看到模擬器內 Remote Web Desktop 的網頁了~

 

然而,如果我到另外一台電腦 B 上面去,

想用 http://IP_MachineA:12345 的方式來看,就會連不上!!

研究了一下,在 just do IT: adb for remote connections 這篇文章有詳細的說明,

因為 adb 只會在 loopback address (也就是 localhost) 上接收 port forwarding,

因此從其他電腦連過來的連線,基本上是沒有人在聽的 =_=

狀況有點像下面的圖示:

Android_emulator_port_forwarding_fail  

 

原作者 rxwen 將原始的 adb 修改了一下,

好讓它可以接收來自所有網路介面的連線(也就是不只 loopback address),

因此就可以接受外部電腦 B 來的連線了!

我試了一下,似乎不能用上面的 redir add 的方式,

而必須改用 rxwen 用的 adb forward 指令來作 port forwarding 才能成功~

下面的步驟就是說明如何應用該作者的修改:

 

4. 下載該作者修改過的 adb,並放到 SDK 目錄中

可以到 http://rxwen-blog-stuff.googlecode.com/files/adb-windows.zip 下載,

若是要 Linux 版的請到該作者網頁去看~

將下載後的 zip 檔解開放到 SDKplatform-tools,

這會蓋掉舊的 adb.exe 和其他幾個檔案,請記得先備份以防萬一~

 

5. 重新啟動模擬器後,執行 adb forward 指令

先重啟模擬器,這樣可以清掉所有舊的 port forwarding 已經建立好的 socket…

接著在命令列模式下,執行下面的指令:

adb forward tcp:12345 tcp:8999

port_5  

 

以上步驟完成後,就已經可以從外部電腦 B 連到模擬器內的 Remote Web Desktop 囉~

rwd    

 

 

(本頁面已被瀏覽過 382 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料