Java ネットワーク接続中断のタイムアウト例外を解決する方法 (ConnectionInterruptedTimeoutExceotion)
Java ネットワーク プログラミングでは、ネットワーク接続中断によるタイムアウト例外が頻繁に発生します。この異常は、ネットワークの遅延やネットワークの不安定などによる接続の中断など、さまざまなネットワーク環境で発生する可能性があります。この記事では、接続中断タイムアウト例外を解決する方法を説明し、いくつかのコード例を示します。
1. 接続タイムアウト期間の設定
Java には、接続タイムアウト期間を設定するメソッドが用意されています。接続を確立するときにタイムアウト期間を設定できます。接続がタイムアウトすると、接続は終了します。割り込みタイムアウト例外。次のコード スニペットを使用してタイムアウトを設定できます。
import java.net.*; import java.io.*; public class ConnectionTimeoutExample { public static void main(String[] args) throws IOException { URL url = new URL("http://www.example.com"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); // 设置超时时间为5秒 try { conn.connect(); } catch (ConnectException e) { System.out.println("连接超时异常:" + e.getMessage()); } finally { conn.disconnect(); } } }
上記のコードでは、URL
クラスを通じて URL オブジェクトを作成し、それを HttpURLConnection
に変換します。物体。次に、setConnectTimeout()
メソッドを使用して、接続タイムアウトを 5 秒に設定します。 connect()
メソッドを呼び出して接続を確立するときに、接続がタイムアウトになると、ConnectException
例外がスローされます。
2. 読み取りタイムアウト期間の設定
接続タイムアウト期間の設定に加えて、読み取りタイムアウト期間も設定できます。場合によっては、接続が正常に確立された場合でも、データの読み取り時にタイムアウト例外が発生することがあります。次のコード スニペットを使用して、読み取りタイムアウトを設定できます。
import java.net.*; import java.io.*; public class ReadTimeoutExample { public static void main(String[] args) throws IOException { URL url = new URL("http://www.example.com"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); // 设置连接超时时间为5秒 conn.setReadTimeout(5000); // 设置读取超时时间为5秒 try { conn.connect(); // 读取数据的代码 } catch (SocketTimeoutException e) { System.out.println("读取超时异常:" + e.getMessage()); } finally { conn.disconnect(); } } }
上記のコードでは、URL
クラスを通じて URL オブジェクトを作成し、それを HttpURLConnection# に変換しました。 ## 物体。次に、
setConnectTimeout() メソッドを使用して接続タイムアウトを 5 秒に設定し、
setReadTimeout() メソッドを使用して読み取りタイムアウトを 5 秒に設定します。
import java.net.*; import java.io.*; public class RetryExample { public static void main(String[] args) throws IOException { String urlString = "http://www.example.com"; int maxRetryTimes = 3; URL url = new URL(urlString); HttpURLConnection conn = null; for (int i = 0; i < maxRetryTimes; i++) { try { conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); // 设置连接超时时间为5秒 conn.setReadTimeout(5000); // 设置读取超时时间为5秒 conn.connect(); // 读取数据的代码 break; // 连接成功,跳出重试循环 } catch (IOException e) { System.out.println("连接中断异常:" + e.getMessage()); } finally { if (conn != null) { conn.disconnect(); } } } } }上記のコードでは、接続ごとに最大再試行回数
maxRetryTimes を定義します。中断された場合、みんなでもう一度試してみます。
以上がJavaネットワーク接続中断タイムアウト例外(ConnectionInterruptedTimeoutExceotion)を解決するメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。