2012-03-13 190 views
1

我正在實施Android客戶端和桌面服務器應用程序。在客戶端,我擴展了用於發送和接收TCP消息的Thread類。它會處理我的信息,並根據信息的含義做一些事情。但消息不會從服務器到客戶端..它不會出現在我的線程緩衝讀取器。 我是android新手。我在哪裏錯過了一點? 我的線程可以不在後臺工作嗎?Android客戶端TCP套接字

public class ConnectionHandler extends Thread { 

private Socket mySocket; 
public static BufferedReader in; 
public static PrintWriter out; 

private Login login; 

public ConnectionHandler(Socket socket,Login login) throws IOException{ 
    mySocket = socket; 
    in = new BufferedReader(new InputStreamReader(mySocket.getInputStream())); 
    out = new PrintWriter(new OutputStreamWriter(mySocket.getOutputStream())); 
    this.login = login; 
} 

public static void writeToOut(String msg){ 
    out.write(msg); 
    out.flush(); 
    out.close(); 
} 

public static void LoginMessage1ToOut(String emailField,String passField){ 
    String msg = "1;"+emailField+";"+passField+";"; 
    Log.d("LoginMsg1",msg); 
    writeToOut(msg); 
} 

@Override 
public void run() { 

    try{ 
     while(true){ 
      String cameString = in.readLine(); 
      String[] tokens = cameString.split(";"); 
      Log.d("*msg",cameString); 
      if(tokens[0].equals("2")){ 
       if(tokens[1].equals("positive")){ 
        login.enterIn(); 
       }else{ 
        login.somethingWrong("Inputs doesnot match.Please re-type."); 
       } 
      } 

     } 
    }catch(Exception es){} 
} 
} 

此線程類使用登錄活動創建。

回答

-1

我覺得應該是:

while (true) { 
    try { 
    String cameString = in.readLine(); //This line maybe throw an error like timeout 
     //check not null 
     if(cameString != null){ 

      String[] tokens = cameString.split(";"); 
      Log.d("*msg",cameString); 
      if(tokens[0].equals("2")){ 
       if(tokens[1].equals("positive")){ 
        login.enterIn(); 
      }else{ 
       login.somethingWrong("Inputs doesnot match.Please re-type."); 
      } 
      } 
     } 

} catch (Exception e) { 
     //Ignore the error 
} 
} 
+0

請添加你的代碼做什麼的一些描述。 – HCarrasko 2016-03-10 12:55:27