Android客户端TCP套接字

时间:2012-03-13 00:18:55

标签: android multithreading sockets tcp tcpclient

我正在实施Android客户端和桌面服务器应用程序。在Client中,我扩展了一个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 :(得分:-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
}
}