2013-02-02 38 views
6

Đây là một câu hỏi mới, nhưng tôi không thể nhận được loại câu trả lời mà tôi đang tìm kiếm trên Google.địa chỉ ổ cắm chưa được giải quyết

Tôi đã đọc lớp InetSocketAddress trong gói java.net và tôi đã xem phương pháp này có tên createUnresolved(String host, int port). Phương pháp này tạo ra một ổ cắm chưa được giải quyết.

Về cơ bản, chúng tôi có ý nghĩa gì khi chưa được giải quyết? Tôi đã đi qua thuật ngữ này thường xuyên trong các lỗi trong khi biên dịch một chương trình nhưng chưa bao giờ hiểu nó hoàn toàn. Bất cứ ai có thể vui lòng giải thích ý nghĩa chung trong java, và có nghĩa là với bối cảnh cho phương pháp nói.

Cảm ơn.

+0

Được mô tả trong Javadoc, bạn cũng đã đánh giá sai. – EJP

+1

Vâng, và tôi cũng viết rằng tôi đã không hiểu nó hoàn toàn. – Rajat

Trả lời

0

Tôi thấy điều này in a sun-blog:

Nhưng quyết định giữ nó như là nhưng sử dụng createUnresolved() để tạo một InetSocketAddress, để chúng ta biết những gì được sử dụng để nhanh chóng nó. Nếu người dùng tát vào địa chỉ IP để bắt đầu, chúng tôi sẽ không xử lý nó. (Tôi nghĩ nó không thể phân biệt được trước đó) Mã thông báo sẽ có bất kỳ số nào người dùng đã sử dụng (IP hoặc tên) ngay từ đầu và trong trường hợp sử dụng tên, khóa để bộ nhớ cache mã thông báo sẽ không thay đổi ngay cả với các thay đổi bổ sung. Vì vậy, mã thông báo ủy nhiệm sẽ tiếp tục hoạt động.

Về cơ bản, đó là một InetSocketAddress nửa nướng - vì vậy nó không phải là lần lặp cuối cùng. Đây là một bước trung gian ..

Và Từ API:

Nó cũng có thể là một cặp (hostname + port number), trong trường hợp này là một nỗ lực sẽ được thực hiện để giải quyết hostname.

Nếu độ phân giải thất bại thì địa chỉ được cho là chưa được giải quyết nhưng có thể vẫn được sử dụng trên một số trường hợp như kết nối thông qua một proxy

Vì vậy, chúng tôi không tìm thấy tên máy chủ, hoặc người dùng thân thiện " www.abc.com "phương pháp.

Nhưng nếu chúng tôi đang kết nối qua proxy thì không sao vì máy chủ proxy xử lý tên máy chủ.

0

tôi đã cùng một ngoại lệ: java.net.UnknownHostException: Host là chưa được giải quyết: https://www.google.com

Vấn đề là vì tôi đã thêm các giao thức https: //, vấn đề đã được giải quyết sau khi tôi bỏ https: //

try { 
    Socket socket = new Socket(); 
    socket.connect(new InetSocketAddress("www.google.com", 443), 100); 
    socket.close(); 
    return true; 
} catch (IOException e) { 
    e.printStackTrace(); 
    return false; 
} 
Các vấn đề liên quan