1
我有一個需要通過UDP連接連接到另一臺計算機的c#程序。爲了執行此操作,我需要臨時更改我的計算機上網卡的IP地址,以便他們可以相互交談。我可以做到這一點很好。但是,當我完成後,我想將我的IP地址恢復到之前的狀態;即自動獲取IP地址。在C#中更改IP地址
有人可以告訴我如何改變我的設置回到他們以前?
感謝,
菲爾
我有一個需要通過UDP連接連接到另一臺計算機的c#程序。爲了執行此操作,我需要臨時更改我的計算機上網卡的IP地址,以便他們可以相互交談。我可以做到這一點很好。但是,當我完成後,我想將我的IP地址恢復到之前的狀態;即自動獲取IP地址。在C#中更改IP地址
有人可以告訴我如何改變我的設置回到他們以前?
感謝,
菲爾
你可能要檢查這個項目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;
}
}
}
}
這不適用於Win 7,似乎 – Kaitlyn
你能解釋一下爲什麼你在第一時間更改地址?無論我想象的IP地址如何,UDP都應該可用。 –
你意識到當你這樣做時,任何正在運行的其他應用程序都會使連接斷開?如果最終用戶在運行應用程序的同時在另一個應用程序中進行處理,則這可能會很危險。 – tsells