我正在使用TCP连接构建Android应用。下面是我的TCP服务器代码。当我测试时,它没有任何错误,但应用程序有错误
“遗憾的是应用程序停止了”。
当我检查代码时,它会停留在:“
s=serverClient.accept();
这是我的代码:
package com.example.truong.total;
import android.util.Log;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Created by duy on 26/10/2017.
*/
public class TCPServer {
int port;
String result;
ServerSocket serverClient;
TextView tv5;
MainActivity at;
public TCPServer(int newPort,MainActivity at) {
this.port=newPort;
this.at=at;
try{
serverClient=new ServerSocket(port);
}catch(IOException e) {
e.printStackTrace();
}
Log.d("constructornethanglol","1");
//Log.d("constructornethanglol","1");
}
public void setConnection() {
tv5=(TextView)at.findViewById(R.id.textView5);
Log.d("thanglol","2");
try {
Log.d("lol3","3");
while (true) {
Log.d("lol4","4");
Socket s;
Log.d("thanglol1","socket");
//stuck
s=serverClient.accept();
Log.d("lol5","5");
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(s.getInputStream()));
this.result = inFromClient.readLine();
tv5.setText("lol");
s.close(); // sau khi dat. trong while
}
}catch(IOException e) {
e.printStackTrace();
}
}
public String getResult() {
return this.result;
}
}
你能告诉我我哪里错了吗?谢谢。抱歉我的英语不好,这不是我的第一语言。
答案 0 :(得分:0)
您应该在后台线程中使用与网络相关的东西。使用AsyncTask
或Thread
。
new Thread(new Runnable(
public void run(){
//your code.
}
)).start();
您可以在以下位置查看示例 https://github.com/nabinbhandari/android-socket-messaging