Java 尝试使用现有ServerSocket创建新套接字时,程序将停止
所以我运行一段代码,它应该创建一个套接字,一个ServerSocket,当我运行代码时,它在第14行遇到了一个停顿,但没有抛出任何异常。我错过了什么Java 尝试使用现有ServerSocket创建新套接字时,程序将停止,java,sockets,tcp,serversocket,Java,Sockets,Tcp,Serversocket,所以我运行一段代码,它应该创建一个套接字,一个ServerSocket,当我运行代码时,它在第14行遇到了一个停顿,但没有抛出任何异常。我错过了什么 public class Syncronizer { InputStream instr = null; PrintStream prnstr = null; BufferedReader br = null; DataInputStream in; DataOutputStream out; Se
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();
编辑:使用halt,我的意思是我的程序仍在运行,但不会超出代码中的这一点,就像一个无限循环。accept()
预期会被阻塞,直到代码调用的套接字的端口上出现连接。accept()
正在侦听
您可能希望在此处使用RTFM:
侦听与此套接字的连接并接受它。该方法会一直阻塞,直到建立连接为止
你期望它做什么?您是否已打开与服务器的连接?我希望此客户端是管道/回送。所以现在我只想打开一个流,然后稍后处理源和汇部分。流到什么?连接有两个端点。此程序必须同时是接收器和源,我希望源输出数据,接收器接收数据。我需要这个程序的多个线程,这就是为什么我首先选择使用TCP套接字的原因。暂时忘掉接收器和源代码吧。您有一个服务器套接字。客户在哪里?哦,该死的,你说得对!谢谢,我完全忘记了/忽略了这一点。