2013-03-21 181 views
0

我有一個非常簡單和基本的Java客戶端/服務器程序。這工作正常。但是,我現在正在嘗試編寫Android客戶端,並且我無法從我的Android客戶端連接到服務器。我爲普通客戶端使用的android網絡代碼使用幾乎相同的代碼。我的Android代碼很簡單,它的作用是啓動該線程的onCreate:客戶端 - 服務器程序,可以從Java客戶端而不是從Android

private int serverPort = 8889; 
private String serverIP = "192.168.5.230"; 
private Socket socket = null; 

private Thread clientThread = new Thread("ClientThread") { 
    @Override 
    public void run() { 
     try { 
      socket = new Socket(); 
      socket.connect(new InetSocketAddress(serverIP, serverPort), 1000); 
      DataInputStream din = new DataInputStream(socket.getInputStream()); 
      DataOutputStream dout = new DataOutputStream(socket.getOutputStream()); 

      while (true) { 
       String message = din.readUTF(); 
       setPicture("picture1"); 
      } 
     } catch (UnknownHostException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }  
    } 
}; 

港是我的服務器上運行正確的端口,如IP地址(這是我從使用ifconfig了,因爲我知道你不能使用本地主機)。當我使用相同的端口和IP地址運行我的普通PC客戶端時,連接會通過。但是,當我在我的Android設備上運行此代碼時,套接字超時,當我嘗試連接。

有沒有人有什麼建議,我要去哪裏錯了?感謝您的幫助。

+0

您的Android設備是否連接到網絡?不是電腦,而是網絡.... – Thihara 2013-03-21 04:22:29

回答

1

您添加在清單文件的權限要求,仔細檢查:

<uses-permission android:name="android.permission.INTERNET" /> 

但是,可能更重要的是,192.168.xx的是本地的還是非路由網絡,所以你需要在同一個網絡上,或者知道如何到達192.168.5.230地址的人。你說當你在你的設備上嘗試它時它不起作用 - 你在運行時運行在本地wifi還是在移動網絡上運行?如果您使用的是移動設備,請嘗試使用WiFi。

+0

爲了澄清,這個答案的底部是什麼解決了我的問題。我錯誤地認爲我的電話網絡能夠連接到我的電腦正在運行的網絡 – lbrendanl 2013-03-22 00:38:45

+0

太棒了!很高興我能幫上忙! – Dave 2013-03-22 00:47:13