public bool setIP(string ip) { Trace.TraceInformation("Interface IP Changing"); for (int i = 0; i < 5; i++) { if (IcsManager.setIpWMI(connectionGuid, ip, "255.255.255.0")) { Trace.TraceInformation("Interface IP Changed"); break; } else { Trace.TraceInformation("Interface IP Change failed"); } Thread.Sleep(2000); } string trimmedIp = ip.TrimEnd("0123456789".ToCharArray()); InternetAddress privateAddress = InternetAddress.Parse(ip); dhcpManager.DhcpInterfaceAddress = IPAddress.Parse(ip); dhcpManager.StartAddress = InternetAddress.Parse(trimmedIp + "1"); dhcpManager.EndAddress = InternetAddress.Parse(trimmedIp + "255"); dhcpManager.Subnet = InternetAddress.Parse("255.255.255.0"); dhcpManager.Gateway = privateAddress; dhcpManager.DnsServers.Add(privateAddress); for (int i = 1; i < 5; i++) { try { Socket sock = dhcpManager.configureSocket(); sock.Close(); dhcpManager.Start(); return(true); } catch (SocketException e) { if (e.ErrorCode == 10049) { Trace.TraceInformation("Interface IP waiting for ready."); dhcpManager.Stop(); Thread.Sleep(2000); } } } return(false); }