我正在实施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){}
}
}
使用登录活动创建此线程类。
答案 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
}
}