Tôi đã sử dụng phương pháp Inet6Address.getByName("2001:db8:0:0:0:0:2:1").toString()
để nén địa chỉ IPv6 và đầu ra là 2001:db8:0:0:0:0:2:1
, nhưng tôi cần 2001:db8::2:1
. , Về cơ bản đầu ra nén nên dựa trên RFC 5952 standard, đó làĐịa chỉ IPV6 thành dạng nén trong Java
1) Shorten as Much as Possible: Ví dụ, năm 2001: db8: 0: 0: 0: 0: 2: 1 phải được rút ngắn xuống còn
2001: db8 :: 2 : 1. Tương tự như vậy, 2001: db8 :: 0: 1 không được chấp nhận, vì biểu tượng "::" có thể đã được sử dụng để tạo ra một biểu diễn ngắn hơn 2001: db8 :: 1.
2) Handling One 16-Bit 0 Field: Ký hiệu "::" KHÔNG được sử dụng để rút ngắn chỉ một trường 16 bit 0. Ví dụ: biểu diễn 2001: db8: 0: 1: 1: 1: 1: 1 là đúng, nhưng 2001: db8 :: 1: 1: 1: 1: 1 không chính xác.
3) Choice in Placement of "::" : = Khi có một sự lựa chọn thay thế trong vị trí của một "::", các chạy dài nhất của liên tiếp 16-bit 0 lĩnh vực PHẢI được rút ngắn (ví dụ, chuỗi với ba liên tiếp không ruộng là rút gọn vào năm 2001: 0: 0: 1: 0: 0: 0: 1). Khi độ dài của các trường 16 bit 0 liên tiếp bằng nhau (tức là, 2001: db8: 0: 0: 1: 0: 0: 1), chuỗi đầu tiên của số không bit PHẢI được rút ngắn. Ví dụ: 2001: db8 :: 1: 0: 0: 1 là chính xác đại diện.
Tôi cũng đã kiểm tra another post in Stack overflow, nhưng không có điều kiện nào được chỉ định (ví dụ lựa chọn vị trí: :).
Có thư viện java nào để xử lý việc này không? Có ai giúp tôi không?
Xin cảm ơn trước.
ước gì có thể nhiều hơn chỉ là 1 cho lời giải thích kỹ lưỡng –
+1 khá ấn tượng –
@Tim Awesome .... Cảm ơn bạn rất nhiều vì câu trả lời tuyệt vời của bạn. – Tony