在.NET C#中获取并分配链接本地IP地址,实现APIPA

时间:2011-09-01 13:55:55

标签: c# .net link-local

我需要在.NET c#中创建一个功能,它是RFC3927中定义的IPv4LL的一种实现,RFC3927是一种在没有DHCP服务器的情况下分配链路本地IP地址的技术。 Windows上以APIPA的名称提供了相同的功能。在Linux上有这样的插件:avahi,avahi-autoipd。但在Windows上还没有找到类似的东西。

到目前为止我只有一个解决方案:在一个范围内发送链路本地IP地址的网络上的ARP数据包,如果有空,则测试它们,一旦找到一个空闲的,它就会被指定为当前的IP地址。

对我的问题的任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果我是你,我会更近距离地调查Avahi,主要是因为你可以查看源代码,但也可以看看它如何与Mono一起使用。

话虽如此,我怀疑您需要一个与您的应用程序完全分开的服务,因此没有必要将自己限制为.Net作为一种技术。

这有用吗?

答案 1 :(得分:0)

根据定义IPv4链路本地寻址的RFC,http://www.ietf.org/rfc/rfc3927.txt您确实需要发送ARP以验证您的随机选择的169.254.XXX.YYY地址是否已被使用。

要在C#中使用ARP,请查看IPHLPAPI.DLL,并通过P / Invoke调用它。 http://www.pinvoke.net/default.aspx/iphlpapi.SendARP