2010-12-18 60 views
0

我正在開發一個Android應用程序,並且應用程序需要連接服務器。 這是客戶端代碼。 79.123.176.59是服務器的IP地址。應用程序和服務器連接到同一網絡。當我執行我的應用程序時,它永遠不會打開套接字。所以它無法連接到服務器。Android應用程序無法打開套接字連接服務器

當我從應用程序執行客戶端代碼分離時,它只是正常工作!

什麼問題?你有什麼建議嗎 ?

謝謝!

int port=8080; 
    Socket s; 
    String msg=""; 
    String err="error"; 
    try{ 
     Log.d("Client","Socket"); 
     s=new Socket("79.123.176.59",port); 
     Log.d("Client","Socket opened"); 
     OutputStreamWriter osw=new OutputStreamWriter(s.getOutputStream()); 
     PrintWriter pw=new PrintWriter(osw); 
     BufferedReader br1=new BufferedReader(new InputStreamReader(s.getInputStream())); 
     Log.d("Client","Streams"); 
     pw.println(latitude + " " + longitude); 
     Log.d("Client","String send"); 
     pw.flush(); 
     msg=br1.readLine(); 
     return msg; 
    } 
    catch (Exception e) 
    { 
     return err; 
    } 

回答

0

您還沒有關閉套接字既不流。所以也許你無法連接,因爲你的設備被之前打開的插座阻塞。 試試你抓後,把這個(和不要做回裏面的try/catch)

finally { 

     pw.close(); 
     br1.close(); 
     s.close(); 
} 
+1

這樣做幫助嗎?如果您應該將此標記爲答案 – PICyourBrain 2011-04-09 22:52:28

0

Socket構造函數不接受一個字符串,我甚至不知道如何編譯?

試試這個

s=new Socket(new InetAddress.getByName("79.123.176.59"),port) 
+0

請檢查它。新的InetAddress.getByName(「79.123.176.59」)是錯誤的,因爲getByName是靜態方法 s = new Socket(InetAddress.getByName(「79.123.176.59」),port) – once2go 2015-10-26 17:01:01

相關問題