2012-06-19 21 views
8

tôi đã tìm thấy theo kinh nghiệm màCó ràng buộc với 0.0.0.0 trong Java được bảo đảm để ràng buộc với tất cả các giao diện mạng không?

Endpoint endpoint1 = Endpoint.create(new Ping()); 
endpoint1.publish("http://0.0.0.0:8080/ws/ping"); 

liên kết với tất cả các giao diện mạng trên máy tính hiện nay (thay vì chỉ localhost - 127.0.0.1 hoặc hostname), nhưng tôi đã không thể xác định vị trí tài liệu mà nói rằng điều này được đảm bảo.

Câu hỏi: Ở đâu nó được xác định rằng ràng buộc với 0.0.0.0 trong Java sẽ luôn ràng buộc với tất cả các giao diện mạng?

+0

Ý bạn là, ngoài thực tế nó là 'INADDR_ANY'? –

+0

Tôi không quen thuộc với lập trình Socket. –

+0

Bạn có muốn nghe về ipv6 không? Tôi có thể giả vờ nó không tồn tại nếu bạn không muốn nghe về nó. –

Trả lời

12

Sử dụng 0.0.0.0 sẽ chỉ liên kết với giao diện hỗ trợ IPv4. Tuy nhiên, nếu bạn liên kết với ::, cần bao gồm tất cả giao diện IPv4 và IPv6, giả sử ngăn xếp TCP/IP của bạn (và Java) có các ổ cắm IPv6 tương thích IPv4 được bật.

Bạn sẽ cần phải tìm đến hạt nhân (hoặc thư viện ổ cắm, nếu bạn đang sử dụng Windows) để giải thích về "lý do". Trên hệ điều hành OS X của tôi, các trang man giải thích nó.

Từ người đàn ông 4 inet:

Sockets có thể được tạo ra với INADDR_ANY địa chỉ cục bộ để thực hiện 'wildcard' phù hợp về tin nhắn đến. Địa chỉ trong số kết nối (2) hoặc sendto (2) cuộc gọi có thể được cung cấp dưới dạng INADDR_ANY có nghĩa là 'máy chủ lưu trữ này'. Địa chỉ phân biệt INADDR_BROADCAST được phép là viết tắt của địa chỉ phát sóng trên mạng chính nếu mạng đầu tiên được định cấu hình hỗ trợ phát sóng.

Từ người đàn ông 4 inet6:

Sockets có thể được tạo ra với các địa chỉ cục bộ '::' (tương đương với IPv6 địa chỉ 0: 0: 0: 0: 0: 0 : 0: 0) để ảnh hưởng đến kết hợp 'ký tự đại diện' trên các thông báo đến.

2

Dường như đây là địa chỉ IP dành riêng cho các loại. Liên kết này có thể có thêm thông tin Is 0.0.0.0 a valid IP address?. Vì vậy, tôi nghi ngờ nó không phải là tài liệu trong Java vì nó có liên quan nhiều hơn đến đặc tả mạng thực tế.

Và như một số người khác đã đề cập đến nó xuất hiện mà nó là địa chỉ IP Chuck Norris: D

HTH

+0

+1 cho địa chỉ IP Chuck Norris. – NlightNFotis

+0

Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. –

+1

@GeraldSchneider để liên kết đến một câu hỏi SO khác là xấu? – Namphibian

8

Nó không có gì để làm với Java. 0.0.0.0 là INADDR_ANY, là địa chỉ đặc biệt được đảm bảo để nhận được từ bất kỳ giao diện mạng nào bằng API C socket, được gọi bằng Java.

Các vấn đề liên quan