因此,我正在运行一段代码,该代码应该在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/