none
为什么我的ip地址有几个? RRS feed

  • 问题

  • 看书写了一段代码:

    static void Main(string[] args)
            {
                IPHostEntry here = Dns.GetHostEntry(Dns.GetHostName());
                foreach (IPAddress ipTemp in here.AddressList)
                {
                    Console.WriteLine(ipTemp);
                }
                Console.Read();
            }

    发现:

    fe80::91b7:6e2c:697d:d6db%1112312
    fe80::14a5:1b99:3f57:fffc%13123131
    192.168.0.3
    2001:0:9d38:953c:14a5:1b91231239:3f57:fffc

    有好几个地址,为什么呢???

    我只想要第三个  192.168.0.3  ,那要怎么得到?不想手动写: IpAddress local = here.AddressList[2]

     

    2012年11月9日 13:03

答案

  • dear

    notebook or pc 可能会有很多张网卡,有线与无线网卡

    如今系统又有支援ipv6、ipv4,所以会列出很多ip,我不晓得你的目的是啥,你得考虑代码部署后的结果,若无部署问题,写死也无所谓

    若有部署问题,ip 应该是让 end user 手动输入,不应由系统自动判断,若你真的很想判断,可以跑个循环让每个 ip 发送 socket package,能够回传正确 response 的则是正确ip

    可利用,IPAddress.TryParse 来判断string是否为标准 ip address

    IPAddress ip;
    if (IPAddress.TryParse("192.168.1.1",out ip))
    {
        //正确ip格式
    }


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/


    2012年11月10日 16:12

全部回复

  • 这个取决于你有几个网卡,每个网卡支持几个协议(ipv6,ipv4等)

    简单的办法只能用正则匹配一下ipv4的地址了。或者你能知道你需要的是那个网卡地址。


    family as water

    2012年11月9日 14:34
  • 如果每次都是四行就取第三行的文本就行了
    2012年11月10日 3:34
  • dear

    notebook or pc 可能会有很多张网卡,有线与无线网卡

    如今系统又有支援ipv6、ipv4,所以会列出很多ip,我不晓得你的目的是啥,你得考虑代码部署后的结果,若无部署问题,写死也无所谓

    若有部署问题,ip 应该是让 end user 手动输入,不应由系统自动判断,若你真的很想判断,可以跑个循环让每个 ip 发送 socket package,能够回传正确 response 的则是正确ip

    可利用,IPAddress.TryParse 来判断string是否为标准 ip address

    IPAddress ip;
    if (IPAddress.TryParse("192.168.1.1",out ip))
    {
        //正确ip格式
    }


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/


    2012年11月10日 16:12