none
如何获取IP冲突 RRS feed

  • 问题

  •  public static void SetIPAddress(string[] ip, string[] submask, string[] getway, string[] dns)
            {
                ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = wmi.GetInstances();
                ManagementBaseObject inPar = null;
                ManagementBaseObject outPar = null;
                foreach (ManagementObject mo in moc)
                {
                    //如果没有启用IP设置的网络设备则跳过   
                    if (!(bool)mo["IPEnabled"])
                        continue;

                    //设置IP地址和掩码   
                    if (ip != null && submask != null)
                    {
                        inPar = mo.GetMethodParameters("EnableStatic");
                        inPar["IPAddress"] = ip;
                        inPar["SubnetMask"] = submask;
                        outPar = mo.InvokeMethod("EnableStatic", inPar, null);
                    }

                    //设置网关地址   
                    if (getway != null)
                    {
                        inPar = mo.GetMethodParameters("SetGateways");
                        inPar["DefaultIPGateway"] = getway;
                        outPar = mo.InvokeMethod("SetGateways", inPar, null);
                    }

                    //设置DNS地址   
                    if (dns != null)
                    {
                        inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
                        inPar["DNSServerSearchOrder"] = dns;
                        outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
                    }
                }
            }
    网上找了一段代码来设置本机IP
    可是怎么样判断是否存在IP冲突?

    2011年3月17日 15:12

答案

  • dear
    不清楚你的架构,但分配IP的动作应该是由DHCP SERVER来处理的,怎会是由Client段自行修改?
    若只是你想要单纯知道哪个IP被用掉,
    1.由DHCP SERVER下手,去他那边捞取资料
    http://www.google.com.tw/search?hl=&q=C%23+DHCP&sourceid=navclient-ff&rlz=1B3GGLL_zh-TWTW410TW410&ie=UTF-8

    2.由client端用ping的方式去找寻不存在网段内的IP,然后分配。
    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    • 已标记为答案 male110 2011年3月22日 5:26
    2011年3月21日 8:58

全部回复

  • 先遍历一遍

    foreach (ManagementObject mo in moc)

    比较现有的 inPar["IPAddress"]


    http://feiyun0112.cnblogs.com/
    2011年3月18日 1:29
    版主
  • foreach (ManagementObject mo in moc)

    这个是什么局域网内现有的IP地址?


    2011年3月19日 1:01
  •  static int Main(string[] args)
            {
                 ManagementClass wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = wmi.GetInstances();
                ManagementBaseObject inPar = null;
                foreach (ManagementObject mo in moc)
                {
     
                        inPar = mo.GetMethodParameters("EnableStatic");
                        Console.WriteLine(inPar["IPAddress"]);
                        
                  }
               Console.ReadKey();
               return 0;
            }
    这样怎么什么也没有输出来呀?

    2011年3月21日 8:37
  • 建议直接操作netsh interface命令来设置网卡地址

    可以使用process.start来运行

    运行前可以先用netsh set命令查看ip设置情况。

     


    family as water
    2011年3月21日 8:46
  • dear
    不清楚你的架构,但分配IP的动作应该是由DHCP SERVER来处理的,怎会是由Client段自行修改?
    若只是你想要单纯知道哪个IP被用掉,
    1.由DHCP SERVER下手,去他那边捞取资料
    http://www.google.com.tw/search?hl=&q=C%23+DHCP&sourceid=navclient-ff&rlz=1B3GGLL_zh-TWTW410TW410&ie=UTF-8

    2.由client端用ping的方式去找寻不存在网段内的IP,然后分配。
    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
    • 已标记为答案 male110 2011年3月22日 5:26
    2011年3月21日 8:58