Есть ли у кого-нибудь код, который определит, находится ли 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.
Примерно в то же время я также разместил тот же вопрос на форумах MSDN. 1800+ просмотров и ни одного ответа. Думаю, не только мне это интересно.