Kaedah untuk menyelesaikan pengecualian sambungan rangkaian Java (ConnectException)
Dalam program Java, pengecualian sambungan rangkaian (ConnectException) ialah ralat biasa. Apabila anda menggunakan program Java untuk mewujudkan sambungan rangkaian ke komputer atau pelayan lain, anda mungkin menghadapi pengecualian ConnectException. Pengecualian ini biasanya disebabkan oleh ketidakupayaan untuk menyambung ke hos sasaran Kemungkinan sebab termasuk ketiadaan hos sasaran, kegagalan rangkaian dan port yang tidak dibuka.
Sebagai tindak balas kepada pengecualian ConnectException, kami boleh mengambil satu siri kaedah dan langkah untuk menyelesaikan masalah. Beberapa kaedah yang biasa digunakan akan diperkenalkan di bawah, dengan contoh kod yang sepadan untuk rujukan.
Contoh kod:
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(); }
Contoh kod:
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
untuk menetapkan tamat masa sambungan. Contoh kod:
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(); }
Sampel kod (menggunakan 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<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); int statusCode = response.statusCode(); if (statusCode == 200) { // 连接成功,执行其他操作 } else { System.out.println("Failed to connect: " + statusCode); }
Melalui kaedah dan kod sampel di atas, anda boleh menyelesaikan pengecualian sambungan rangkaian dalam program Java dengan lebih baik. Dalam aplikasi sebenar, pilih kaedah yang sesuai mengikut situasi tertentu, dan lakukan pengoptimuman dan penyahpepijatan yang munasabah digabungkan dengan mekanisme pengendalian pengecualian untuk memastikan kestabilan dan kebolehpercayaan sambungan rangkaian.
Atas ialah kandungan terperinci Kaedah untuk menyelesaikan pengecualian sambungan rangkaian Java (ConnectException). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!