Получить IP-адрес с сервера DHCP для моего приложения C # - как виртуальные машины - PullRequest
1 голос
/ 16 сентября 2009

Я разрабатываю приложение с несколькими сокетными соединениями (наблюдатель тревоги TCP). В настоящее время, чтобы смоделировать аварийные сигналы, я создал небольшие приложения, работающие на ВМ-машине (то есть, потому что у Vm другой IP-адрес), которые имитируют конечные точки аварийных сигналов.

То, что я хочу сделать, - это смоделировать сигналы тревоги на той же машине, на которой я запускаю мой «сервер» (то есть первое приложение), за исключением того, что я хочу, чтобы эти ложные сигналы тревоги имели другой IP. Я не хочу, чтобы мои макеты работали с тем же IP-адресом, что и у первого приложения (например, сервер 192.168.1.4; я хочу, чтобы макет был 192.168.1.10, другой - 192.168.1.11 и т. Д .; все живут на одной машине просто так, как виртуальные машины могут это делать).

Виртуальные машины в режиме «мостовой сети» могут получать разные IP-адреса от DHCP-сервера (вот где я понял эту идею). Итак, я немного разочарован в том, где проводить исследования, чтобы выполнить задачу, мой вопрос:

Как можно запрограммировать мои фиктивные приложения на получение собственных IP-адресов через DHCP? (или, это невозможно, учитывая .NET Framework?)

Хадж .-

Ответы [ 2 ]

3 голосов
/ 16 сентября 2009

Разумеется, вы можете общаться с DHCP-сервером - формат пакета задокументирован в RFC 2131. Сделать это из C # относительно просто.

Однако все, что он делает - это «крадет» IP-адрес из пула DHCP-сервера. На самом деле он не привязывает его к сетевому стеку.

Похоже, вам все еще нужно, чтобы ваше приложение прослушивало этот IP-адрес. Если этот IP-адрес не назначен сетевому адаптеру на машине, это не будет работать.

Вкратце: вам нужно несколько сетевых адаптеров или сетевой адаптер с несколькими компьютерами. В этом случае вам лучше позволить ему разобраться с DHCP.

С другой стороны, если весь ваш трафик является локальным, установите «Microsoft Loopback Adapter» и присвойте ему несколько IP-адресов.

0 голосов
/ 16 сентября 2009

Вы наверняка сможете сделать это в C #, но я сомневаюсь, что для этого существует существующий класс (это ненормально!)

Вам, вероятно, придётся делать это самостоятельно, получая / отправляя пакеты самостоятельно.

Мне удалось найти следующую ссылку, которая может быть полезна:

http://social.msdn.microsoft.com/Forums/en-US/wsk/thread/836c2150-583c-43a6-93b3-0e3202c2e2f5

(я знаю, что это говорит о создании DHCP-сервера, но это может быть хорошим местом для начала с точки зрения поиска работы протокола DHCP)

Сказав, что, я полагаю, у вас могут возникнуть проблемы с запросом аренды IP-адреса с другого IP-адреса.

...