Находится ли IP-адрес в той же подсети, что и локальный компьютер (с поддержкой IPv6)

Есть ли у кого-нибудь код, который определит, находится ли IP-адрес (IPv4 или IPv6) в той же подсети, что и машина, на которой запущено приложение? Я видел множество примеров кода, который делает это с IPv4, но не могу найти ни одного, поддерживающего IPv6.

РЕДАКТИРОВАТЬ:

Я не уверен, понимаю ли я все различия между v4 и v6, так что вот немного больше по моему вопросу. У меня есть приложение, которое обслуживает как интернет-клиентов, так и интранет-клиентов, то есть есть клиенты, которые находятся в той же физической сети, что и сервер. Таким образом, иногда между клиентом есть маршрутизаторы, а иногда нет. С IPv4 я могу определить это, сравнивая IP-адрес клиента с IP-адресом сервера и подсетью, поэтому если IP-адрес моего сервера и маска подсети соответственно:

192.168.123.15 то есть есть клиенты, которые находятся в той же физической сети, что и сервер. Таким образом, иногда между клиентом есть маршрутизаторы, а иногда нет. С IPv4 я могу определить это, сравнивая IP-адрес клиента с IP-адресом сервера и подсетью, поэтому если IP-адрес моего сервера и маска подсети соответственно:

192.168.123.15 то есть есть клиенты, которые находятся в той же физической сети, что и сервер. Таким образом, иногда между клиентом есть маршрутизаторы, а иногда нет. С IPv4 я могу определить это, сравнивая IP-адрес клиента с IP-адресом сервера и подсетью, поэтому если IP-адрес моего сервера и маска подсети соответственно:

192.168.123.15 255.255.255.0

И сервер получает клиентский запрос от 192.168.123.100 Я знаю, что между клиентом и сервером нет маршрутизатора. Однако, если сервер получает клиентский запрос от 192.168.1.100 или, возможно, 67.7.23.4, я знаю, что между этими клиентами и сервером стоит маршрутизатор. В .Net я могу собрать IP-адреса клиента и сервера (как v4, так и v6), но я не могу найти маску подсети IPv6.

Есть ли способ собрать эту информацию в .Net или есть какая-то разница между IPv4 и IPv6, которую я неправильно понял?

ИЗМЕНИТЬ x2:

Я разместил это на сайте MS Connect, чтобы узнать, есть ли это что-то, над чем они работают, или если есть причина, по которой они не добавили свойство IPv6Mask в класс UnicastIPAddressInformation.

https://connect.microsoft. com / VisualStudio / feedback / details / 643031 / unicastipaddressinformation-class-has-no-ipv6mask-property

Примерно в то же время я также разместил тот же вопрос на форумах MSDN. 1800+ просмотров и ни одного ответа. Думаю, не только мне это интересно.

http://social.msdn.microsoft.com/Forums/en-US/netfxnetcom/thread/dd30e161-9be5-4d70-97c0-22e2756ce953

5
задан Spencer Ruport 11 February 2011 в 21:57
поделиться