Java服务器未连接
给定以下Java代码:Java服务器未连接,java,Java,给定以下Java代码: public Server() throws IOException { socket = new ServerSocket(2000); System.out.println("Opening server at port: " + socket.getLocalPort()); System.out.println("IP: " + socket.getInetAddress()); tab = new SpookerTab();
public Server() throws IOException {
socket = new ServerSocket(2000);
System.out.println("Opening server at port: " + socket.getLocalPort());
System.out.println("IP: " + socket.getInetAddress());
tab = new SpookerTab();
thread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
System.out.println("Waiting for a client...");
Socket client = socket.accept();
System.out.println(client.getInetAddress().getHostAddress() + " has connected.");
Thread thread = new Thread(new SpookerClient(client));
threads.put(client, thread);
thread.start();
System.out.println("Client found!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
thread.start();
}
它从不通过socket.accept()
为什么会这样
Java Server java.net.ConnectException: Connection timed out: connect
它从不通过socket.accept()
为什么会这样
Java Server java.net.ConnectException: Connection timed out: connect
但这就是服务器的工作方式
Socket client = socket.accept();
将阻止等待客户端连接的线程
javadoc声明:
侦听与此套接字的连接并接受它。这个
方法阻塞,直到建立连接
将创建一个新的套接字,如果有安全管理器,则
使用调用安全管理器的checkAccept方法
s、 getInetAddress().getHostAddress()和s.getPort()作为其参数
确保操作是允许的。这可能会导致
安全例外
如果没有客户端连接到服务器,则执行将停止。我假设您有另一个进程尝试连接到它?您需要另一个线程/进程连接到它,以便accept()返回。连接超时表明防火墙阻止了此端口。服务器从不连接-它正在等待传入连接。因此,正如Joe C已经指出的那样,您需要一个连接到TCP端口2000(您的服务器)的客户端;但是我们没有那个客户端的代码。最有可能的是,有一个防火墙挡住了去路,但如果没有客户端代码,我们无法判断。