我写了一个简单的 java tcp 客户端。每次运行客户端时,我都会在命令行中指定服务器 IP 地址。
当没有服务器监听指定的 IP 地址或 IP 地址不存在时,会引发 SocketTimeoutException。这对于运行客户端的子网之外的任何 IP 地址都可以正常工作。如果我在客户端的同一子网上指定了错误的服务器 IP 地址,则会引发 java.net.NoRouteToHostException。
这对我来说很奇怪。两个地址都属于同一个子网,绝对不需要 ip 路由就可以到达服务器。如果服务器位于与客户端不同的子网中,并且运行客户端的主机没有默认网关,这将是正确的。
我想要的只是接收一个 SocketTimeoutException ,即使是客户端同一子网上的错误地址(我的意思是没有侦听服务器或不存在地址的地址)。
我怎样才能获得这种行为?
谢谢