2012-03-13 4 views
1

Я реализую приложение для Android и настольного сервера Android. В Client я расширяю класс Thread для отправки и получения TCP-сообщений. Он будет обрабатывать мои сообщения и делать что-то из-за смысла сообщения. Но сообщения не поступают от сервера к клиенту. Он не отображается в моем потоковом буферизаторе. Я новичок в 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