java.net.InetAddress giải quyết hostname sử dụng mặc định host-name phân giải máy cục bộ bằng cách mặc định:Cách định cấu hình độ phân giải tên máy chủ để sử dụng máy chủ DNS tùy chỉnh trong Java?
chủ tên-to-IP độ phân giải địa chỉ được thực hiện thông qua việc sử dụng một sự kết hợp của thông tin cấu hình máy tính cục bộ và mạng đặt tên các dịch vụ như Hệ thống tên miền (DNS) và Dịch vụ thông tin mạng (NIS). (Các) dịch vụ đặt tên cụ thể đang được sử dụng là theo mặc định, máy cục bộ được định cấu hình. Đối với bất kỳ tên máy chủ nào, địa chỉ IP tương ứng của nó được trả về. [source]
Làm sao chúng ta có thể cấu hình hành vi này mà không sửa đổi phân giải tên máy mặc định máy tính cục bộ không? Ví dụ:
Ví dụ: có cấu hình java.net.InetAddress sao cho nó phân giải tên máy chủ thông qua OpenDNS (208.67.222.222, 208.67.220.220) hoặc DNS công khai của Google (2001: 4860: 4860 :: 8888, 2001: 4860: 4860: : 8844)?
Hoặc là giải pháp duy nhất để tạo yêu cầu gói DNS một cách rõ ràng, gửi chúng đến máy chủ thông qua java.net.DatagramSocket hoặc java.net.Socket và phân tích cú pháp câu trả lời?
Như được ghi trong cùng một trang web: "Các thuộc tính này có thể không được hỗ trợ trong các bản phát hành trong tương lai". Có cách nào khác để đạt được điều đó không? – bernatp
Không. Không, nếu bạn muốn sử dụng 'java.net.InetAddress'. Nếu bạn đang sử dụng một cơ chế khác thì bạn có thể sử dụng thư viện DNS của bên thứ 3 (ví dụ: [dnsjava] (http://www.dnsjava.org/)). Lý do thực sự duy nhất mà thuộc tính có thể thay đổi là nếu Oracle sửa chữa quá trình triển khai 'java.net' trong một số phiên bản Java tương lai. Nếu điều này xảy ra, họ có thể sẽ cung cấp một giải pháp mới cho vấn đề này tại thời điểm đó. – Pace
Họ đã đại tu 'java.net' trong Java 9, vì vậy các lớp' sun.net' cần thiết để kéo nó không còn tồn tại nữa. – ndm13