我正在尝试为我的Android应用程序构建一个简单的TCP服务器。这是我的代码:
public class TCPServer extends Thread{
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();
}
}
public void run() {
tv5=(TextView)at.findViewById(R.id.textView5);
Socket s;
try {
while (true) {
s= serverClient.accept();
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(s.getInputStream()));
this.result = inFromClient.readLine();
tv5.setText(this.result);
s.close();
}
}catch(IOException e) {
e.printStackTrace();
}
}
public String getResult() {
return this.result;
}
public void setResult(String s){
this.result=s;
}
public void TCPclose(){
try {
serverClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
当有人按下按钮时它会调用:
receive_data.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
receiveResult.start();
tv5.setText(receiveResult.getResult());
}
});
但似乎它可以达到这条线:
s= serverClient.accept();
它在那条线之前被卡住了。我想也许没有客户端连接到服务器,所以我尝试为服务器编写代码等待客户端,但它不起作用。这是我的尝试:
public class TCPServer extends Thread{
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();
}
}
public void run() {
tv5=(TextView)at.findViewById(R.id.textView5);
Socket s;
try {
while (true) {
Thread.sleep(10)
s= serverClient.accept();
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(s.getInputStream()));
this.result = inFromClient.readLine();
tv5.setText(this.result);
s.close();
}
}catch(IOException e) {
e.printStackTrace();
}
}
public String getResult() {
return this.result;
}
public void setResult(String s){
this.result=s;
}
public void TCPclose(){
try {
serverClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
但它不起作用。有人能告诉我哪里错了。谢谢。抱歉我的英语不好。