Получить и назначить локальные IP-адреса в.NET C#, реализация APIPA

Мне нужно сделать в.NET C# функциональность, которая является реализацией IPv4LL, как это определено в RFC3927, технологии для назначения локальных IP-адресов без DHCP-сервера. Такая же функциональность была доступна в Windows под названием APIPA. На linux есть такой плагин: avahi, avahi-autoipd. Но на окнах еще не нашел ничего подобного.

До сих пор у меня есть только одно решение: отправлять пакеты ARP по сети с локальным IP-адресом в пределах диапазона и проверять их, если они свободны, как только я найду один свободный, он назначается в качестве текущего IP-адреса.

Любое предложение относительно моей проблемы будет высоко ценится.

2 ответа

На вашем месте я бы изучил Avahi чуть ближе, в основном потому, что вы можете просматривать исходный код, если хотите, а также посмотреть, как он работает с Mono.

При этом я подозреваю, что вам нужен сервис, совершенно отдельный от ваших приложений, и поэтому нет необходимости ограничивать себя.Net как технологией.

Это полезно вообще?

В соответствии с RFC, который определяет локальную адресацию IPv4, http://www.ietf.org/rfc/rfc3927.txt вам действительно нужно отправить ARP, чтобы убедиться, что ваш случайно выбранный 169.254.XXX.YYY не используется уже.

Чтобы использовать ARP в C#, проверьте IPHLPAPI.DLL и вызовите его через P / Invoke. http://www.pinvoke.net/default.aspx/iphlpapi.SendARP

Другие вопросы по тегам