ソケットからアイテムを読み取ろうとしていますが、ソケットのストリームに何もない場合、読み取りにとどまり、アプリケーションをバックアップします。ソケットに何もない状態が一定時間続いた後、読み取りタイムアウトを設定する方法や接続を終了する方法があるかどうかを知りたいと思いました。
Javaを作成する場合は、ナビゲートの学習 APIドキュメント が役立ちます。ソケット読み取りの場合は、 タイムアウトオプションを設定します
このソケットがURLConnection
を介してWebリクエストを実行するために作成された場合、ストリームを読み取る前にURLConnection
に読み取りおよび接続タイムアウトを直接設定できます。
InputStream createInputStreamForUriString(String uriString) throws IOException, URISyntaxException {
URLConnection in = new URL(uriString).openConnection();
in.setConnectTimeout(5000);
in.setReadTimeout(5000);
in.setAllowUserInteraction(false);
in.setDoInput(true);
in.setDoOutput(false);
return in.getInputStream();
}