针对 ConnectException 异常,我们可以采取一系列的方法和措施来解决问题。下面将介绍几种常用的方法,并附上相应的代码示例供参考。
代码示例:
String host = “example.com”;
int port = 80;
try {
InetAddress inetAddress = InetAddress.getByName(host);
boolean reachable = inetAddress.isReachable(10000);
if (!reachable) {
System.out.println(host + ” is not reachable.”);
} else {
System.out.println(host + ” is reachable.”);
// 进一步进行连接操作
}
} catch (UnknownHostException e) {
System.out.println(“Unknown host: ” + host);
} catch (IOException e) {
e.printStackTrace();
}
代码示例:
String host = “example.com”;
int port = 80;
try {
// 禁用防火墙
Runtime.getRuntime().exec(“sudo systemctl stop firewalld”);
// 连接操作
Socket socket = new Socket(host, port);
// 其他操作
} catch (IOException e) {
e.printStackTrace();
} finally {
// 恢复防火墙设置
try {
Runtime.getRuntime().exec(“sudo systemctl start firewalld”);
} catch (IOException e) {
e.printStackTrace();
}
}
setSoTimeout
方法来设置连接超时时间。代码示例:
String host = “example.com”;
int port = 80;
try {
Socket socket = new Socket();
socket.connect(new InetSocketAddress(host, port), 10000); // 设置连接超时时间为 10 秒
// 连接成功,执行其他操作
} catch (IOException e) {
e.printStackTrace();
}
代码示例(使用 Apache HttpClient):
String url = “https://example.com”;
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(url))
.GET()
.build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
int statusCode = response.statusCode();
if (statusCode == 200) {
// 连接成功,执行其他操作
} else {
System.out.println(“Failed to connect: ” + statusCode);
}
通过以上方法和示例代码,可以更好地解决 Java 程序中的网络连接异常。在实际应用中,根据具体情况选择合适的方法,并结合异常处理机制进行合理的优化和调试,以确保网络连接的稳定性和可靠性。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
添加我为好友,拉您入交流群!
请使用微信扫一扫!