如何用C#获取局域网中在线的主机名和IP 
以及如何用程序去实现对本地IP的修改??

解决方案 »

  1.   

    获取            
                IPAddress[] ipadd;
                string hostname = Dns.GetHostName();
                ipadd=Dns.GetHostAddresses(hostname);
                
                foreach (IPAddress ip in ipadd)
                {
                    MessageBox.Show(hostname);
                    MessageBox.Show(ip.ToString());
                }
    更改 
    using   System;     
      using   System.Management;     
      using   System.Threading;     
        
      namespace   WmiIpChanger     
      {     
        class   IpChanger     
        {     
          [MTAThread]     
          static   void   Main(string[]   args)     
          {     
            ReportIP();     
            //   SwitchToDHCP();     
            SwitchToStatic();     
            Thread.Sleep(   5000   );     
            ReportIP();     
            Console.WriteLine(   "end."   );     
          }     
        
          static   void   SwitchToDHCP()     
          {     
            ManagementBaseObject   inPar   =   null;     
            ManagementBaseObject   outPar   =   null;     
            ManagementClass   mc   =   new   ManagementClass("Win32_NetworkAdapterConfiguration");     
            ManagementObjectCollection   moc   =   mc.GetInstances();     
            foreach(   ManagementObject   mo   in   moc   )     
            {     
              if(   !   (bool)   mo["IPEnabled"]   )     
                continue;     
        
              inPar   =   mo.GetMethodParameters("EnableDHCP");     
              outPar   =   mo.InvokeMethod(   "EnableDHCP",   inPar,   null   );     
              break;     
            }     
          }     
        
          static   void   SwitchToStatic()     
          {     
            ManagementBaseObject   inPar   =   null;     
            ManagementBaseObject   outPar   =   null;     
            ManagementClass   mc   =   new   ManagementClass("Win32_NetworkAdapterConfiguration");     
            ManagementObjectCollection   moc   =   mc.GetInstances();     
            foreach(   ManagementObject   mo   in   moc   )     
            {     
              if(   !   (bool)   mo[   "IPEnabled"   ]   )     
                continue;     
        
              inPar   =   mo.GetMethodParameters(   "EnableStatic"   );     
              inPar["IPAddress"]   =   new   string[]   {   "192.168.1.1"   };     
              inPar["SubnetMask"]   =   new   string[]   {   "255.255.255.0"   };     
              outPar   =   mo.InvokeMethod(   "EnableStatic",   inPar,   null   );     
              break;     
            }     
          }     
        
          static   void   ReportIP()     
          {     
            Console.WriteLine(   "******   Current   IP   addresses:"   );     
            ManagementClass   mc   =   new   ManagementClass("Win32_NetworkAdapterConfiguration");     
            ManagementObjectCollection   moc   =   mc.GetInstances();     
            foreach(   ManagementObject   mo   in   moc   )     
            {     
              if(   !   (bool)   mo[   "IPEnabled"   ]   )     
                continue;     
        
              Console.WriteLine(   "{0}\n   SVC:   '{1}'   MAC:   [{2}]",   (string)   mo["Caption"],     
                (string)   mo["ServiceName"],   (string)   mo["MACAddress"]   );     
        
              string[]   addresses   =   (string[])   mo[   "IPAddress"   ];     
              string[]   subnets   =   (string[])   mo[   "IPSubnet"   ];     
        
              Console.WriteLine(   "   Addresses   :"   );     
              foreach(string   sad   in   addresses)     
                Console.WriteLine(   "\t'{0}'",   sad   );     
        
              Console.WriteLine(   "   Subnets   :"   );     
              foreach(string   sub   in   subnets   )     
                Console.WriteLine(   "\t'{0}'",   sub   );     
            }     
          }     
        }     
      }