首页 文章

从dhcp服务器获取我的C#应用程序的IP地址 - 如虚拟机

提问于
浏览
1

我正在开发一个多套接字连接的应用程序(TCP警报观察器) . 目前,为了模拟警报,我在虚拟机上运行了小型应用程序(即,因为Vm具有不同的IP),模拟警报 endpoints .

我想要做的是在我正在运行我的“服务器”(即第一个应用程序)的同一台机器上模拟警报,除了我希望这些模拟警报具有不同的IP . 我不希望我的模拟运行与第一个应用程序相同的IP(例如服务器是192.168.1.4;我想模拟为192.168.1.10,其他是192.168.1.11等;所有生活在同一台机器上,就像VM可以做到的那样) .

“桥接网络”模式下的虚拟机可以从DHCP服务器获取不同的IP(这是我得到这个想法的地方) . 所以,我对调查完成任务的地方有些不确定,我的问题是:

我怎样才能使用我的模拟应用程序通过DHCP获取自己的IP地址? (或者,根据.NET Framework,这是不可能的吗?)

Haj.-

2 回答

  • 0

    您当然可以与DHCP服务器通信 - 数据包格式在RFC 2131中有记录 . 从C#执行此操作相对简单 .

    但是,所有这一切都是从窃取DHCP服务器池中的IP地址 . 它实际上并没有将它绑定到网络堆栈 .

    听起来你仍然需要让你的应用程序监听这个IP地址 . 除非将此IP地址分配给计算机上的网络适配器,否则这将不起作用 .

    简而言之:您需要多个网络适配器或多宿主网络适配器 . 在这种情况下,你最好让它自己用DHCP排序 .

    另一方面,如果您的所有流量都是本地流量,请安装“Microsoft Loopback Adapter”,并为其分配一堆IP地址 .

  • 3

    您当然可以在C#中执行此操作,但我怀疑是否存在执行此操作的现有类(这不是正常的事情!)

    您可能最终必须自己接收/发送数据包 .

    我设法找到以下可能有用的链接:

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

    (我知道它创建了一个DHCP服务器,但它在查找DHCP协议工作方面可能是一个很好的起点)

    话虽如此,我认为您可能在从不同的IP地址请求租用IP地址时遇到一些问题 .

相关问题