Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TCP服务器:如何让服务器等待客户端连接_Java_Android_Tcp - Fatal编程技术网

Java 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

我正在尝试为我的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();
        }
    }
}
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();