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

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

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

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

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

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

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

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

0 голосов
/ 27 января 2015

В соответствии с 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

...