Java ネットワーク タイムアウト例外 (NetworkTimeoutException) の解決方法
ネットワーク タイムアウト例外は、Java プログラムでよく発生する例外の一種で、ネットワーク接続が切断されていることを示します。一般的なネットワーク タイムアウト例外は、NetworkTimeoutException です。この記事では、Java ネットワーク タイムアウト例外を解決するいくつかの方法を紹介し、コード例を示します。
ネットワーク タイムアウト例外を処理する前に、まずネットワーク接続が正常であることを確認してください。次のコードを使用して、ネットワーク接続が利用可能かどうかを確認できます。
import java.net.InetAddress; public class NetworkUtil { public static boolean isReachable(String ipAddress, int timeout) { try { InetAddress address = InetAddress.getByName(ipAddress); return address.isReachable(timeout); } catch (Exception e) { return false; } } }
上の例では、isReachable
メソッドは、 を呼び出すことにより、パラメータとして IP アドレスとタイムアウトを受け取ります。 InetAddress
このクラスの isReachable
メソッドは、ネットワークが到達可能かどうかを確認するために使用されます。ネットワークに到達できない場合は false を返し、そうでない場合は true を返します。
ネットワーク接続タイムアウトは、不安定なネットワーク環境やサーバーの応答の遅さが原因で発生することがあります。ネットワーク接続のタイムアウト期間を長くすると、ネットワーク タイムアウト例外の発生を減らすことができます。次のサンプル コードは、ネットワーク接続のタイムアウト期間を設定する方法を示しています。
import java.net.Socket; import java.net.InetSocketAddress; public class ConnectionUtil { public static void connect(String host, int port, int timeout) { try { Socket socket = new Socket(); socket.connect(new InetSocketAddress(host, port), timeout); socket.close(); } catch (Exception e) { e.printStackTrace(); } } }
上記のコードでは、Socket オブジェクトを作成し、connect
メソッドを呼び出して、指定されたリモートに接続します。ホストとポート番号。 2 番目のパラメータをタイムアウト期間に設定すると、ネットワーク接続のタイムアウト期間を設定できます。
多数のネットワーク接続を処理する場合、接続プールまたはスレッド プールを使用してネットワーク接続を管理すると、効果的にネットワーク接続を管理できます。ネットワーク接続数の削減 タイムアウト例外の発生次のサンプル コードは、接続プールまたはスレッド プールを使用してネットワーク接続を管理する方法を示しています。
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.net.HttpURLConnection; import java.net.URL; public class ConnectionManager { private static ExecutorService connectionPool = Executors.newFixedThreadPool(10); public static void sendRequest(String url) { connectionPool.submit(() -> { try { HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); // 处理响应结果 connection.disconnect(); } catch (Exception e) { e.printStackTrace(); } }); } }
上記のコードでは、ExecutorService## を使用して
newFixedThreadPool メソッドを作成しました。 # インターフェイス サイズ 10 の接続プール。次に、
submit メソッドを使用して、処理のために接続プールにリクエストを送信するタスクを送信します。このタスクでは、
HttpURLConnection オブジェクトを作成し、接続と読み取りのタイムアウトを設定し、最後に応答結果を処理して切断します。
以上がJava ネットワーク タイムアウト例外 (NetworkTimeoutException) を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。