我有一个c#程序,需要通过UDP连接连接到另一台计算机。为了执行此操作,我需要临时更改计算机上网卡的IP地址,以便它们可以相互通信。我可以做的很好。但是,当我完成后,我希望将我的IP地址恢复到以前的状态,即自动获取IP地址。
有人能告诉我如何将我的设置改回以前的状态吗?
谢谢,
菲尔
发布于 2011-09-21 22:13:54
您可能需要检查此SwitchNetConfig项目。
您感兴趣的部分是如何更改IP:
public static void SetIP( string nicName, string IpAddresses,
string SubnetMask, string Gateway, string DnsSearchOrder)
{
ManagementClass mc = new ManagementClass(
"Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
// Make sure this is a IP enabled device.
// Not something like memory card or VM Ware
if( mo["IPEnabled"] as bool )
{
if( mo["Caption"].Equals( nicName ) )
{
ManagementBaseObject newIP =
mo.GetMethodParameters( "EnableStatic" );
ManagementBaseObject newGate =
mo.GetMethodParameters( "SetGateways" );
ManagementBaseObject newDNS =
mo.GetMethodParameters( "SetDNSServerSearchOrder" );
newGate[ "DefaultIPGateway" ] = new string[] { Gateway };
newGate[ "GatewayCostMetric" ] = new int[] { 1 };
newIP[ "IPAddress" ] = IpAddresses.Split( ',' );
newIP[ "SubnetMask" ] = new string[] { SubnetMask };
newDNS[ "DNSServerSearchOrder" ] = DnsSearchOrder.Split(',');
ManagementBaseObject setIP = mo.InvokeMethod(
"EnableStatic", newIP, null);
ManagementBaseObject setGateways = mo.InvokeMethod(
"SetGateways", newGate, null);
ManagementBaseObject setDNS = mo.InvokeMethod(
"SetDNSServerSearchOrder", newDNS, null);
break;
}
}
}
}https://stackoverflow.com/questions/7501203
复制相似问题