connect(localhost) 抛出异常,connect(私有地址) 阻塞

问题描述 投票:0回答:1

当我尝试使用本地主机 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() 阻止本地主机地址?

谢谢!

java sockets nio
1个回答
2
投票

连接被拒绝是指目标服务器主动拒绝连接,因为该端口没有服务器监听。

当客户端没有收到服务器的响应时,就会发生超时,例如服务器根本不存在,流量被某些防火墙等阻止。

没有什么比尝试连接并在端口被占用时向我发送响应更好的了。您必须在客户端实施重试。

© www.soinside.com 2019 - 2024. All rights reserved.