首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中更改IP地址

在C#中更改IP地址
EN

Stack Overflow用户
提问于 2011-09-21 22:06:49
回答 1查看 7.1K关注 0票数 1

我有一个c#程序,需要通过UDP连接连接到另一台计算机。为了执行此操作,我需要临时更改计算机上网卡的IP地址,以便它们可以相互通信。我可以做的很好。但是,当我完成后,我希望将我的IP地址恢复到以前的状态,即自动获取IP地址。

有人能告诉我如何将我的设置改回以前的状态吗?

谢谢,

菲尔

EN

回答 1

Stack Overflow用户

发布于 2011-09-21 22:13:54

您可能需要检查此SwitchNetConfig项目。

您感兴趣的部分是如何更改IP:

代码语言:javascript
复制
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;
      }
    }
  }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7501203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档