Java TCP服务器:如何让服务器等待客户端连接
我正在尝试为我的android应用程序构建一个简单的TCP服务器。这是我的密码:Java TCP服务器:如何让服务器等待客户端连接,java,android,tcp,Java,Android,Tcp,我正在尝试为我的android应用程序构建一个简单的TCP服务器。这是我的密码: public class TCPServer extends Thread{ int port; String result; ServerSocket serverClient; TextView tv5; MainActivity at; public TCPServer(int newPort,MainActivity at) { this.po
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();
}
}
}
s= serverClient.accept();
当有人按下按钮时,它会呼叫:
receive_data.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
receiveResult.start();
tv5.setText(receiveResult.getResult());
}
});
s= serverClient.accept();
但它似乎可以达到以下目标:
s= serverClient.accept();
它在那条线之前被卡住了。我认为可能并没有客户机连接到服务器,所以我尝试为服务器编写代码来等待客户机,但它不起作用。这是我的想法:
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();
}
}
}
但它不起作用。有人能告诉我哪里错了吗。非常感谢。对不起,我的英语不好。到达s=serverClient.accept();然后它停止了?@MoritzSchmidt:它没有到达s=serverClient.accept(),它在代码之前停止,它到底停止在哪里?它是否符合您的线程处理方法?什么是receiveResult对象?@MoritzSchmidt:receiveResult是TCPServer对象,我的代码在s=serverClient.accept()之前停止;(android应用程序出现错误:“不幸的是,应用程序已停止”到达s=serverClient.accept();然后停止?@MoritzSchmidt:未到达s=serverClient.accept());,它在该代码之前停止。它到底停止在哪里?它是否击中了你的线程处理方法?什么是receiveResult对象?@MoritzSchmidt:receiveResult是TCPServer对象,我的代码在s=serverClient.accept()之前停止。(android应用程序有错误:“很遗憾,应用程序已停止”
s= serverClient.accept();