Клиент:
Код: Выделить всё
private static void disableSSLVerification() throws Exception {
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
private static void sendClientIp() {
try {
disableSSLVerification();
// Lấy địa chỉ IP của client
String clientIp = InetAddress.getLocalHost().getHostAddress();
System.out.println("Client IP: " + clientIp);
// Tạo kết nối đến server
URL url = new URL("https://192.168.00.95:8443/clientip");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("POST"); // Sử dụng phương thức POST để gửi dữ liệu
connection.setDoOutput(true);
connection.setHostnameVerifier((hostname, session) -> true);
connection.setConnectTimeout(10000); // 5 giây timeout kết nối
connection.setReadTimeout(10000);// Chấp nhận tất cả chứng chỉ SSL
// Gửi địa chỉ IP đến server
try (OutputStream os = connection.getOutputStream()) {
os.write(clientIp.getBytes());
os.flush();
}
// Nhận phản hồi từ server
if (connection.getResponseCode() == HttpsURLConnection.HTTP_OK) {
System.out.println("Địa chỉ IP đã được gửi thành công.");
} else {
System.out.println("Lỗi: " + connection.getResponseCode());
}
} catch (Exception e) {
e.printStackTrace();
}
Код: Выделить всё
static class ClientIpHandler implements HttpHandler {
public void handle(HttpExchange exchange) {
try {
if ("POST".equalsIgnoreCase(exchange.getRequestMethod())) {
// Đọc địa chỉ IP từ yêu cầu
InputStream is = exchange.getRequestBody();
String clientIp = new BufferedReader(new InputStreamReader(is))
.lines().collect(Collectors.joining("\n"));
System.out.println("Nhận địa chỉ IP từ client: " + clientIp);
// Bạn có thể lưu trữ hoặc xử lý địa chỉ IP này ở đây
// ...
MenuItem clientIpItem = new MenuItem(clientIp);
clientIpItem.addActionListener(e -> {
if (!clientIpItem.getLabel().equals(""+clientIp+"(Đang chạy)")){
clientIpItem.setLabel(""+clientIp+"(Đang chạy)");
startClient(); // Gọi phương thức để khởi động client
} else {
clientIpItem.setLabel(clientIp);
stopClient();// Đổi tên lại thành client IP
}
});
clientIpItems.put(clientIp, clientIpItem); // Lưu item vào map
popupMenu.add(clientIpItem); // Thêm item vào men
// Phản hồi cho client
String response = "Client ID received: " + clientIp;
exchange.sendResponseHeaders(200, response.length());
OutputStream responseBody = exchange.getResponseBody();
responseBody.write(response.getBytes());
responseBody.flush();
} else {
String errorMessage = "Phương thức không được hỗ trợ.";
exchange.sendResponseHeaders(405, errorMessage.length());
OutputStream responseBody = exchange.getResponseBody();
responseBody.write(errorMessage.getBytes());
responseBody.flush();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
exchange.close();
}
}
}
telnet 192.168.100.95 8443
Это работает, но этот код — нет. пожалуйста, помогите мне
Подробнее здесь: https://stackoverflow.com/questions/791 ... -timed-out