2007年8月21日

获取主机所有网络接口的IPV6地址

最近在做一项关于IPV6的对应工作。因为工作平台是.NET Framework,所以也参照了不少关于这方面的文档。上午看到了一篇帖介绍了关于如何获取当前主机上所有网络接口(如网卡)的IPV6单播地址的方法,感觉还不错,所以晚上便把它摘录了下来。

using System.Collection;
using System.Net;
using System.Net.NetworkInformation;
static IPAddress[] GetAllAddressV6()
{
    IPAddress [] ret = null;
    ArrayList alRet = new ArrayList();
    NetworkInterface[] adapters =
        NetworkInterface.GetAllNetworkInterfaces();
    foreach(NetworkInterface adapter in adapters)
    {
        IpInterfaceProperties adapterProperty =
            adapter.GetIPProperties();
        UnicastIPAddressInformationCollection allAddress =
            adapterProperty.UnicastAddresses;
        foreach(UnicastIPAddressInformation addr in
            allAddress)
        {
            if (addr.Address.AddressFamily ==
                AddressFamily.InterNetworkV6)
            {
                alRet.Add(addr.Address);
            }
        }
    }
    ret = alRet.ToArray(typeof(IPAddress)) as IPAddress[];
    return ret;
}



原帖请参见 这里

注:当上述方法返回的数组长度为零时,就说明当前主机根本没有被分配合适的IPV6地址。

没有评论: