TCP-сокет для Android-клиента - PullRequest
1 голос
/ 13 марта 2012

Я внедряю клиентское приложение для Android и настольное серверное приложение.В клиенте я расширяю класс Thread для отправки и получения TCP-сообщений.Он будет обрабатывать мои сообщения и что-то делать из-за значения сообщения.Но сообщения не приходят от сервера к клиенту .. Он не появляется в моем потоке bufferedreader.Я новичок на Android.Где я упустил момент?Может ли мой поток не работать в фоновом режиме?

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 Ответ

0 голосов
/ 13 марта 2012

Я думаю, что это должно быть:

  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
}
}
...