サーバーアプリケーションがリッスンしている場合にうまく動作するNettyクライアントがあります。しかし、サーバーアプリケーションが実行されておらず、ポートでリッスンしていない場合でも、クライアントはサーバーが存在すると見なして実行します。NettyサーバーがポートでリッスンしているかどうかをNettyクライアントが検出できるようにするにはどうすればいいですか?
私は、サーバーがリッスンしていないときに、データを送信することさえしないで、代わりにユーザーに管理者などに連絡するように指示することもしません。これも可能ですか?
注: クライアントが指定されていないポートまたはipに接続しようとすると、クライアントは処理できる例外をスローします。私の問題は、サーバが通常聞くべきポートでリッスンしていないときに例外がスローされないことです。
[URLConnection.setConnectionTimeout](https://docs.oracle.com/javase/8/docs/api/java/net/URLConnection.html#setConnectTimeout-int-)を使用して接続を試みることができます。 –
しかし、タイムアウトが終了するまで待つ必要があります。とにかくクライアントが終了するまで待って、結果が受信されたかどうかを確認し、そうでなければ処理します。しかし、タイムアウトやクライアントが終了するのを待つのではなく、私のサーバーで何が起きているのかを知る方法を好むだろう。また、何らかの理由で接続が遅い場合はどうなりますか?その場合、タイムアウトは接続を中断しないでしょうか? – giro
「ping」の一種です。 localhostの場合、ポートを自分自身にバインドしようとする可能性があります(ポートがフリーであることを確認してください)が、それはひどいハックです。ごめんなさい。 –