当我尝试使用本地主机 172.0.0.1 运行以下代码时,它会引发异常:java.net.ConnectException:连接被拒绝:连接
channel = SocketChannel.open();
//172.0.0.1 is a non-existing server
channel.connect(new InetSocketAddress("172.0.0.1", 4342));
但是,当我使用私有地址运行以下代码时,以下代码会阻塞直到超时:
channel = SocketChannel.open();
//192.168.0.1 is a non-existing server
channel.connect(new InetSocketAddress("192.168.0.1", 4342));
请问为什么连接到本地主机会导致 connect 抛出异常,而连接到私有地址会阻塞?
我问这个是因为我希望在启动本地主机服务器时阻止 connect() ,并且当服务器启动时 connect() 会自动连接到服务器。
有没有办法让 connect() 阻止本地主机地址?
谢谢!
连接被拒绝是指目标服务器主动拒绝连接,因为该端口没有服务器监听。
当客户端没有收到服务器的响应时,就会发生超时,例如服务器根本不存在,流量被某些防火墙等阻止。
没有什么比尝试连接并在端口被占用时向我发送响应更好的了。您必须在客户端实施重试。