高手帮忙,
1、我想通过C#获取机器的网卡连接状态,请各位大侠指点!
2、如果一台机器上装有多块网卡,我应该如何判断每一块网卡的连接状态及相应的IP信息?

解决方案 »

  1.   

    http://topic.csdn.net/t/20030923/10/2289810.html
      

  2.   

      我也需要这方面~  尤其是 是否能连接到WWW 也是个问题 如何判断
      

  3.   

    下面是我自己写的,ms网站上面有例子,CS101SamplesBCL里面的networkusing System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Net;
    using System.Text;
    using System.IO;
    using System.Net.NetworkInformation;
    public partial class netuser_Default : System.Web.UI.Page
    {
        private NetworkInterface[] interFace;
        private StringBuilder sb = new StringBuilder();
        protected void Page_Load(object sender, EventArgs e)
        {
            //查看是否有可用的网络连接
            if (NetworkInterface.GetIsNetworkAvailable())
            {
             //得到所有的可用的网络连接
                interFace = NetworkInterface.GetAllNetworkInterfaces();
            }
            foreach (NetworkInterface i in interFace)
            {
                PhysicalAddress p = i.GetPhysicalAddress();            sb.Append("网卡名称是:" + i.Name.ToString() + "<br/>");            sb.Append("物理地址是:"+p.ToString()+"<br/>");            sb.Append("ID是:" + i.Id.ToString() + "<br/>");            sb.Append("类型是:" + i.NetworkInterfaceType.ToString() + "<br/>");            sb.Append("当前网络连接操作状态是:" + i.OperationalStatus.ToString() + "<br/>");            sb.Append("速度是" + i.Speed.ToString("N") + "字节<br/>");            sb.Append("是否设置为只接收数据包:" + i.IsReceiveOnly.ToString() + "<br/>");            sb.Append("是否启用了网络接口用以接受多路广播数据报:" + i.SupportsMulticast.ToString() + "<br/>");            sb.Append("是否支持ipv4:" + i.Supports(NetworkInterfaceComponent.IPv4).ToString() + "<br/>");            sb.Append("是否支持ipv6:" + i.Supports(NetworkInterfaceComponent.IPv6).ToString() + "<br/>");            sb.Append("接口描述:" + i.Description.ToString() + "<br/>");            sb.Append("<br/><br/>");        }
            Label1.Text = sb.ToString();
        }
    }
    得到ip地址是
     IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
            Label1.Text = "本机域名为:" + Dns.GetHostName() + "<br/>Ip地址为"+host.AddressList[0].ToString();
    看是否联网了ping一个就可以了
     private Ping userping;
            userping = new Ping();
            PingReply pr = userping.Send(ip地址);
            if (pr.Status == IPStatus.Success)//还有其他的枚举状态,自己去看
            {
                  // do something
            }
      

  4.   

    networkinterface和ip的addresslist的顺序是对应的
      

  5.   

    非常感谢各位networkinterface和ip的addresslist的顺序是对应的 能不能说的详细一点呀,用这种方法可以获取一台机器上不同网卡的相应状态吗?
      

  6.   

    可以,它得到的是一个数组
    说它们是对应的表示networkinterface[0]和addresslist[0]是同一块网卡的地址和ip
      

  7.   

    非常感谢,不过这个方法是在vs2005下的,有没有vs2003下的呀
      

  8.   

    To:xiaotupansy(微雨燕双飞) 
    VS2003下面没有using System.Net.NetworkInformation;现在2005下的相应函数在2003下能找到吗?
      

  9.   

    cfs1979(学无止境) ( ) 信誉:100    Blog  2006-12-23 20:23:15  得分: 0  
     
     
       To:xiaotupansy(微雨燕双飞) 
    VS2003下面没有using System.Net.NetworkInformation;现在2005下的相应函数在2003下能找到吗?
    ------------------
    找不到
    VS2005是DOTNET2.0,你用的VS2003找不到,说明用的是DOTNET1.1
    你可以下载个frameword2.0
    http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=zh-cn
      
     
      

  10.   

    非常感谢各位!To:lookcode() 
        我已经安装了.net2.0框架,可是应该怎么在VS2003下用呀。还希望各位多多帮助呀,小弟期待中......
      

  11.   

    我现在使用Win32_NetworkAdapterConfiguration,可是怎么获取网卡当前状态呀,我现在只能通过这个获取到机器上的所有网卡IP和mac地址,怎么获取状态,如何知道IP与mac地址之间的对应关系?
      

  12.   

    To cfs1979:
        请问你的.net framework升级到2.0后,还是在vs2003可以调用.net framework2.0的函数吗?