2012-02-01 45 views
9

Tôi sử dụng Request.UserHostAddress, chỉ có thể nhận địa chỉ IPv4, cách nhận địa chỉ IPv6 của khách truy cập?Cách lấy địa chỉ IPv6 trong C#?

+3

Khách truy cập sẽ có EITHER v4 HOẶC địa chỉ v6. Họ sẽ không đến với cả hai. –

+1

Người dùng có truy cập trang web qua IPv6 ở nơi đầu tiên không? Xem http://stackoverflow.com/questions/9061470/get-user-ip-in-c-sharp. – GSerg

+1

Bạn luôn có thể chuyển đổi địa chỉ IPv4 theo cách thủ công sang IPv6: http://www.fnode.com/2009/11/convert-ipv4-into-ipv6/ – Max

Trả lời

12

Tôi giả sử bạn đang nói về HttpRequest.UserHostAddress. Nó sẽ luôn trả về địa chỉ được sử dụng để kết nối với bạn. Nếu yêu cầu được thực hiện qua IPv6, nó sẽ trả về địa chỉ IPv6 của họ; nếu yêu cầu được thực hiện qua IPv4, nó sẽ trả về địa chỉ IPv4 của họ.

Bạn nên bắt đầu bằng cách điều tra lý do yêu cầu được thực hiện qua IPv4. Và những người ở số http://serverfault.com có lẽ sẽ giúp đỡ nhiều hơn về điều đó.

6

Địa chỉ IPv4 được dịch sang địa chỉ IPv6 bằng cách đặt 4 octet của địa chỉ IPv4 vào 4 octet bên phải của địa chỉ IPv6.

Sau khi chèn 4 octet của địa chỉ IPv4 vào tối đa 4 octet của địa chỉ IPv6, các octet còn lại nhiều nhất sẽ là là 0 giá trị.

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