比如,子网内机器的 ip 是 192.168.100.2,掩码 255.255.255.0,网关 ip 是 192.168.100.1,我要如何才能在子网的机器上得到网关的 ip?

解决方案 »

  1.   

    private string DnsQuery()
    {
    string gateway = null;
    string[] dnses;
    ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection moc = mc.GetInstances();
    //枚举当前机子上的所有网卡
    foreach(ManagementObject mo in moc)
    {
    if((bool)mo["ipEnabled"])
    {
    dnses = (string[])mo["DefaultIPGateway"];
    if (dnses!=null)
    {
    gateway = dnses[0];//使用第一个找到的DNS服务器。
    }
    }
    }
    return gateway;
    }
      

  2.   

    上面代码我修改过,原来是获得DNS的,所以命名有点乱,自己修改一下吧
      

  3.   

    谢谢,刚刚查到了,用 wmi 很方便的,可耻滴自埋了    private void button1_Click(object sender, System.EventArgs e)
        {
          ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
          ManagementObjectCollection moc = mc.GetInstances();
          StringBuilder sb = new StringBuilder();
          foreach(ManagementObject mo in moc)
          {
            if((bool)mo["IPEnabled"] == true)
              sb.Append(mo["MacAddress"].ToString() + "\r\n");        string[] strs = (string[])mo["IPAddress"];
            if(strs != null) foreach(string sss in strs)
            {
              sb.Append(" - " + sss + "\r\n");
            }        strs = (string[])mo["DefaultIPGateway"];
            if(strs != null) foreach(string sss in strs)
            {
              sb.Append(" * " + sss + "\r\n");
            }        mo.Dispose();
          }      MessageBox.Show(sb.ToString());
        }