2013-08-16 32 views
1

這是我的Android tcp客戶端的一部分,它在Emulator上非常完美,但是當它運行在我的Samsung Galaxy S3上時,它不工作,我確定我的手機是通過wifi連接到路由器,我可以得到一些幫助請Android的TCP/IP客戶端不能在真實的設備上工作

class Connect_Thread implements Runnable { 

    @Override 
    public void run() { 

     try { 
      InetAddress serverAddr = InetAddress.getByName(SERVER_IP); 
      socket = new Socket(serverAddr , SERVERPORT); 
     } catch (UnknownHostException e1) { 
      e1.printStackTrace(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 

    } 

} 
+0

請給出一些信息。異常是否被拋出?你有沒有讓你的清單允許網絡訪問? – Xabster

+0

什麼是'SERVER_IP'? – tilpner

+0

感謝您的回覆,我在onCreate方法中調用類 當程序在三星S3上運行時沒有任何異常,也沒有連接到服務器,但在模擬器中服務器告訴我有1個連接和每件事太棒了,如果你想我會把完整的代碼放在這裏。 –

回答

2

您的問題有很多問題。

1)以上您的代碼將無法通過手機互聯網連接工作(UMTS,GMRS),因爲它使用的是IP從private networks

2.保留一個IP池)請確保您的Android設備和服務器在同一個網絡中。路由器經常將WiFi/WLAN設備放入不同的網絡(subnetwork)。即LAN設備可能得到192.168.1.0/255.255.255.128將具有從192.168.1.1 to 192.168.1.126的範圍,而WLAN得到192.168.1.128/255.255.255分配並具有來自192.168.1.129 to 192.168.1.254的IP地址。

3.)如果您使用紮根的Android設備,則可能正在使用Android防火牆。在這種情況下,您將不得不允許應用程序使用WiFi連接。

4.)Windows/PC防火牆。如果你使用Windows或PC的防火牆,確保防火牆能夠接受端口80

傳入連接,在這種情況下,你的Android設備將在不同的網絡,你將需要添加一個新的路線你的路由器。或者,您可以配置您的路由器使用相同的IP池用於WLAN和LAN。

+0

是的,我在同一個網絡路由器,我的電話IP是192.168.1.5,我的電腦ip有c#服務器是192.168.1.7,我不明白爲什麼它在模擬器上工作,而不是在我的手機上工作,我的電腦有本地主機服務器,但我不能通過我的手機訪問它,當我在我的手機瀏覽器中輸入192.168.1.7我有錯誤頁面,有什麼想法嗎? –

+0

我已添加第4個上市。您的PC防火牆是否啓用?如果是這樣,它是否允許端口80上的**傳入**連接(默認HTTP端口)?如果不是開放這個端口 – Tseng

+0

真的很感謝是的,它的防火牆 –

0

您的電腦和手機是否在同一網絡上?因爲,192.168.1.7是本地IP,所以它可能在你的模擬器中工作。但是,如果手機在不同的網絡上,它不會工作。

+0

是在同一個網絡,有什麼幫助嗎? –

+0

引發任何異常? –

+0

不例外拋出,有什麼問題? –

相關問題