Androidにクライアントサーバーアプリがあり、どちらも同じマシンで実行されています。クライアント アプリの最初のアクティビティで、サーバー アプリケーションに接続するクライアント クラスを呼び出そうとしましたが、強制終了されました。
これは、アプリの最初のアクティビティでクライアント クラスを呼び出す方法です。
Thread cThread=new Thread(new ClientThread());
cThread.start();
ここに私のクライアントクラスがあります:
public class ClientThread implements Runnable{
private Handler handler=new Handler();
Socket socket;
private TextView clientState;
public void run()
{
try
{
InetAddress serverAddr=InetAddress.getByName("10.0.2.2");
handler.post(new Runnable(){
public void run(){
clientState.setText(" try to connect!");
}
});
socket=new Socket(serverAddr, 8080);
//connected=true;
handler.post(new Runnable(){
public void run(){
clientState.setText("Connected!");
}
});
}
catch(Exception e){
handler.post(new Runnable(){
public void run(){
clientState.setText("Error");
}
});
e.printStackTrace();
}
}
protected void onStop() {
super.onStop();
try {
// make sure you close the socket upon exiting
//out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
誰かが何が間違っているのか、少なくとも私にアイデアを教えてくれますか。私が言うべきことの1つは、クライアントが正常に動作することです-クライアントクラスが最初のアクティビティに統合されると、サーバーに接続します(つまり、最初はクライアントクラスがなく、すべてが最初のアクティビティにありました...そしてそれはうまくいきました)。詳細については、ここにいます!よろしくお願いします!