web-dev-qa-db-ja.com

Javaソケットの読み取りをタイムアウトする方法は?

ソケットからアイテムを読み取ろうとしていますが、ソケットのストリームに何もない場合、読み取りにとどまり、アプリケーションをバックアップします。ソケットに何もない状態が一定時間続いた後、読み取りタイムアウトを設定する方法や接続を終了する方法があるかどうかを知りたいと思いました。

19
Masterban

Javaを作成する場合は、ナビゲートの学習 APIドキュメント が役立ちます。ソケット読み取りの場合は、 タイムアウトオプションを設定します

23
erickson

このソケットが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();
}
0
Arie Z.