2012-08-28 181 views
0

我很難將模擬的Android活動連接到運行在我的計算機上的常規Java程序。下面是一些我把那個應該有固定他們的注意事項...Android套接字到Java ServerSocket連接

  • 我嘗試連接到10.0.2.2,該仿真器是
  • 本地主機的ip地址我產生新線程獨立從UI線程進行連接。 (我沒有做一個奇特的工作線程,我只是創造了一個新的線程和說。開始())

所以基本上你的系統是由聲明一個ServerSocket,然後一個正常的Java程序的等待在.accept()方法。我踢了那個節目,希望它坐在那裏等待。然後切換到我的Activity類,該類有一個onClick方法的按鈕。該方法調用我的新線程的.start()方法。在我的活動的.run方法中,我聲明瞭一個新的Socket並嘗試連接到本地主機。

你知道我應該知道的其他事嗎?主要問題是沒有任何反應。我在本地主機Java程序中的.accept方法調用之後放了一個斷點,我永遠不會達到它。

+1

這不是一個真正的代碼問題,但更多的是模擬器使用計算機網絡的方式。仿真器位於內部虛假網絡上,無法到達您的計算機。您將不會遇到實際硬件設備的問題。 – Nick

+0

感謝尼克,這似乎是問題所在。我以爲我讀了一些你可以和當地主持人溝通的地方,但我想不是。這將使調試稍微困難... – Matthew

回答

1

請參閱此線程將仿真器網絡連接到計算機的網絡。希望這有助於

How to connect android emulator to the internet

從崗位最多的回答是

我覺得有些問題的答案可能有這種斜但是解決,但在這裏是爲我工作。

假設當您在無線網絡上並且您安裝了LAN卡時發生問題,問題是模擬器嘗試從該LAN卡獲取其DNS設置。當你通過局域網連接時沒有問題,但如果你使用無線連接,則完全沒用。當我在筆記本電腦上時,我注意到了這一點。

那麼,如何解決?簡單:禁用您的LAN卡。真。只需進入您的網絡連接,找到您的LAN卡,右鍵單擊它並選擇禁用。現在嘗試你的模擬器。如果你像我一樣,它突然......起作用了! - artifex

我覺得這個評論有用。

其實,模擬器採用具有最高優先級的適配器,讓你切換適配器的優先級(無線爲最高)應該工作過,也不會要求你完全禁用LAN適配器。謝謝你的回答,雖然,救了我頭痛 - Anzeo 11年4月6日在14:47

在你的情況,Java程序是在同一臺機器上。所以我想,Java程序Socket可能會綁定到其中一個網絡接口的IP地址,而Android正試圖連接到另一個網絡接口。可以肯定的是,只需禁用除一個網絡接口之外的所有網絡接口並運行程序發佈您可以調整網絡接口的優先級。

+0

如果您提供的鏈接發生變化,請在您的回答中添加更多詳細信息。在這種情況下,你的答案不會有幫助。 – dckuehn

+1

感謝@Dckuehm的建議,我編輯了答案。 –