2010-10-21 87 views
3

我正在開發針對Android的網絡應用程序,而且我仍然堅持將我的真實Android設備與在臺式計算機上運行的設備模擬器連接。將真實設備連接到Android模擬器

我用路由器創建了專用網絡,所以只有連接到網絡的是我的電腦和我的手機,以避免防火牆/封閉端口的問題。

我的電腦ip是192.168.1.100,我試圖互相ping通,所以我可以海上每個網絡節點的可達性。 Ping可以在我的PC(不是模擬器控制檯)和手機上正常工作。

問題是我想從我的手機ping PC模擬器,而不是PC本身...爲此,我使用模擬器控制檯...我應該使用我的電腦IP或應該使用另一臺一?我已經看到一些IP像「10.0.x.x」這裏http://developer.android.com/guide/developing/tools/emulator.html

但我想那些是爲了連接兩個EMULATORS,對吧?

此外,我試圖通過套接字連接它們,通過仿真器控制檯爲端口創建重定向,但仍無法連接它們。

任何線索? 謝謝!

回答

3

我試過早期的解決方案,我給你,它沒有工作。正如你所說的,原因可能是模擬器控制檯的redir命令只重定向來自本地主機的數據包。

所以我搜索了一個簡單的代理服務器,並用它在同一臺機器上進行測試。

http://www.java2s.com/Code/Java/Network-Protocol/Asimpleproxyserver.htm

有了這個,我使用了以下配置:在代理

String host = "localhost"; 
int remoteport = 3000; 
int localport = 4000; 

然後運行模擬器實例:

  • 服務器套接字偵聽端口2000 。
  • 打開遠程登錄實例,併發出「再導向添加TCP:3000:2000」

最後在實際設備上打開一個套接字本機地址在端口4000

因此,網絡地圖的樣子:

設備< - >機:4000代理機:3000 < - >:3000仿真器:2000 - >應用程序

這使用設備和仿真器上的同一個應用程序爲我工作。

+0

非常感謝,我會檢查出 – Pedriyoo 2010-12-16 09:12:22

+0

對我很好,謝謝! – prolink007 2011-11-28 03:22:49

0

我已經得出結論,仿真器只能接收來自環回(127.0.0.1)的數據包,因爲當您發出「redir add tcp:port:newPort時,它只會重定向第一個端口(與環回相關)到第二個端口(關聯到「模擬器虛擬IP」)

我試過創建一個網橋,它將所有進入我的電腦的數據包重定向到IP 127.0.0.1,但仍然不起作用。因此,我認爲,仿真器已經開發了僅與其他仿真溝通......

我希望到這裏來反駁我的人。

0

您可能可以將真實設備連接到仿真器實例。

您是否嘗試過在模擬設備上設置重定向,然後通過java套接字連接真實設備?

例如:

在仿真器打開一個服務器套接字偵聽端口2000,然後打開一個telnet連接,併發出命令:

REDIR添加TCP:4000:2000

最後,在真實設備上打開一個端口到4000端口上的機器地址(192.168.1.100)。

+0

感謝您的回答。我嘗試過,但沒有工作......我終於得到了另一個Android手機,所以我只是放棄了,但如果你連接它們,我想知道如何...... – Pedriyoo 2010-12-01 13:29:56

相關問題