シンプルな Java tcp クライアントを作成しました。クライアントを実行するたびに、コマンド ラインでサーバーの IP アドレスを指定します。
指定された IP アドレスでリッスンしているサーバーがない場合、または IP アドレスが存在しない場合、SocketTimeoutException が発生します。これは、クライアントが実行されているサブネット外の IP アドレスに対して正常に機能します。クライアントの同じサブネットで間違ったサーバー IP アドレスを指定すると、代わりに java.net.NoRouteToHostException が発生します。
これは私にとって奇妙です。両方のアドレスが同じサブネットに属しているため、サーバーに到達するために IP ルートを設定する必要はまったくありません。これは、サーバーがクライアントとは異なるサブネット上にあり、クライアントが実行されているホストにデフォルト ゲートウェイがない場合に当てはまります。
私が望むのは、クライアントの同じサブネット上の間違ったアドレス (つまり、リッスン サーバーまたは存在しないアドレスがないアドレス) に対しても、単に SocketTimeoutException を受け取ることです。
どうすればこの動作を取得できますか?
ありがとうございました