当系统中存在多张网卡,我通过网上流行的函数得到的IP地址表,如何确定哪个地址是当前的使用的IP

解决方案 »

  1.   

    string s="",mac="";             //            //name            //            string hostInfo = Dns.GetHostName();                        //            //IP            System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;              for (int i = 0; i < addressList.Length; i ++)             {                 s += addressList[i].ToString();             }             //            //mac            //            ManagementClass mc;            mc=new ManagementClass("Win32_NetworkAdapterConfiguration");            ManagementObjectCollection moc=mc.GetInstances();            foreach(ManagementObject mo in moc)            {                if(mo["IPEnabled"].ToString()=="True")                    mac=mo["MacAddress"].ToString();                                }            txtName.Text=hostInfo;            txtIp.Text=s;            txtMac.Text=mac;            button1.Enabled=false;            button2.Focus();
      

  2.   

    xie cdo(VC?我才刚学) 
        代码可以用,不过我想问下,这样可以吗?
        我现在没有两张网卡
        如果一台机器2张网卡,都绑IP,那么如何判定用哪个IP出去的,就用这个吗?
      

  3.   

    我装了VM,弄了几个虚泥的适配器,用你的程序读,发现所有的MAC都读出,那么是否肯定,第一个拿出来的就是物理的MAC?
      

  4.   

    学习了,但楼上的好像没有正面回答问题啊!---------------------------------------------
    装了VM,弄了几个虚泥的适配器
    ---------------------------------------------
    vm的虚拟适配器是都运行的(你所选的模式相关的ip)
      

  5.   

    其实问题说明白了就是,我想知道当前系统究竟用的是哪个IP和外部(局域或互联).我现在拿到一系列的IP号,自己知道哪个是,但是如何通过程序知道~
      

  6.   

    //GetHostName
    strHostName = Dns.GetHostName();

    //GetHostIp
    IPHostEntry IPEntry = Dns.GetHostByName(strHostName);
    IPAddress [] addr = IPEntry.AddressList;目前我是通过这样一来获得IP地址的,通常是addr[0].ToString(),为使用的IP,但是不能肯定,万一不是就完了
      

  7.   

    你可以每一个地址都尝试一下是否可以连接到指定的地址(如:www.sohu.com),如果可能连接就说明这个地址可用啊.连接可能会很慢,可以用委托来处理.