Điều này nghe giống như một cái gì đó đáng lẽ phải được hỏi trước đây, và nó có kiểu, nhưng tôi đang tìm địa chỉ IP và máy chủ cục bộ của máy ngay cả khi nó không thể phân giải được thông qua DNS (trong Java).Làm cách nào để nhận tên máy chủ cục bộ nếu không thể giải quyết thông qua DNS trong Java?
Tôi có thể nhận địa chỉ IP cục bộ mà không cần giải quyết bằng cách lặp lại qua NetworkInterfaces.getNetworkInterfaces()
.
Bất kỳ câu trả lời cho câu hỏi này tôi đã tìm thấy chỉ sử dụng getLocalHost()
InetAddress localhost = java.net.InetAddress.getLocalHost();
hostName = localhost.getHostName();
nhưng điều này ném một UnknownHostException
nếu hostname không được giải quyết thông qua DNS.
Không có cách nào để nhận tên máy chủ cục bộ mà không có tra cứu DNS xảy ra sau hậu trường?
chỉnh sửa: địa chỉ IP lấy ra là 10.4.168.23 Trường hợp ngoại lệ là java.net.UnknownHostException: cms1.companyname.com: cms1.companyname.com
(hostname thay đổi cho giả giấu tên), và các tập tin host không chứa tên máy. Nhưng nó biết tên máy chủ của nó, vì vậy tôi không chắc chắn lý do tại sao tôi không thể nhận được nó mà không có ngoại lệ bị ném.
Hệ điều hành biết tên máy, như khi tôi gọi getLocalHost (), nó ném một ngoại lệ có chứa tên máy chủ. Tôi chỉ muốn có thể nhận được tên máy chủ đó mà không cần tra cứu. –
Đảm bảo rằng tên máy chủ của bạn không chứa bất kỳ ký tự gạch dưới nào. Nếu bạn đang ở trên Windows thì nó sẽ không ngăn cản bạn sử dụng dấu gạch dưới trong tên máy, nhưng nó không hoạt động với Java vì kiểm tra nghiêm ngặt các ký tự được cho phép. – sinha