因此,我正在运行一段代码,该代码应该在ServerSocket上创建一个Socket,当我运行我的代码时,它在第14行停滞不前,但不会引发任何异常。我错过了什么?

public class Syncronizer {

    InputStream instr = null;
    PrintStream prnstr = null;
    BufferedReader br = null;
    DataInputStream in;
    DataOutputStream out;
    ServerSocket TCPServerSocket;

    public Syncronizer() {
        try {
            instr = System.in;
            br = new BufferedReader(new InputStreamReader(instr));
            TCPServerSocket = new ServerSocket(7007);
            Socket clientSocket = TCPServerSocket.accept();
            in = new DataInputStream(clientSocket.getInputStream());
            out = new DataOutputStream(clientSocket.getOutputStream());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    ...
}


只是为了节省您的时间,这是暂停我的程序的行:

Socket clientSocket = TCPServerSocket.accept();


编辑:暂停是指我的程序仍然运行,但不会像无限循环那样超出代码的这一点。

最佳答案

除非在代码调用accept()的套接字正在侦听的端口上进入连接,否则accept()可能会阻塞。

您可能想在这里进行RTFM:http://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html#accept%28%29


监听与此套接字建立的连接并接受它。该方法将阻塞,直到建立连接为止。

关于java - 尝试使用现有的ServerSocket创建新的套接字时程序停止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25977868/

10-11 18:56