网络的相关设置在项目开发中有较多的应用,有时候需要在项目中对网络信息进行相关设置。

现在提供提供几种相关的辅助方法类。

(1).IP地址

        /// <summary>/// IP地址/// </summary>public string IpAddress{get{string ipAddress;var address = GetAddress();if (address == null){ipAddress = string.Empty;}else{ipAddress = address.Address.ToString();}return ipAddress;}set { if (value == null) throw new ArgumentNullException(nameof(value)); }}

(2).网关地址

        /// <summary>/// 网关地址/// </summary>public string Getway{get{              string getway;if (Getwaryes != null && Getwaryes.Count > 0){getway = Getwaryes[0].Address.ToString() == "0.0.0.0" ? "" : Getwaryes[0].Address.ToString(); }else{getway =string.Empty;}return getway;}set { if (value == null) throw new ArgumentNullException(nameof(value)); }}

(3). DHCP服务器地址

       /// <summary>/// DHCP服务器地址/// </summary>public string DhcpServer{get{string dhcpServer;if (DhcpServerAddresses != null && DhcpServerAddresses.Count > 0){dhcpServer = DhcpServerAddresses[0].ToString();}else{dhcpServer = string.Empty;}return dhcpServer;}set { if (value == null) throw new ArgumentNullException(nameof(value)); }}

(4).MAC地址

        /// <summary>/// MAC地址/// </summary>public string MacAddres{get{string macAddress;if (MacAddress == null)macAddress = string.Empty;else if (MacAddress.ToString().Length == 12){macAddress = MacAddress.ToString().Insert(4, "-").Insert(9, "-");}else{macAddress = MacAddress.ToString();}return macAddress;}set { if (value == null) throw new ArgumentNullException(nameof(value)); }}

(5). 主DNS地址

        /// <summary>/// 主DNS地址/// </summary>public string DnsMain{get{var dnsMain =string.Empty;if (DnsAddresses.Count > 0){if (IsIPAddress(DnsAddresses[0].ToString())){dnsMain = DnsAddresses[0].ToString();}}else{dnsMain =string.Empty;}return dnsMain;}set { if (value == null) throw new ArgumentNullException(nameof(value)); }}

(6).备用DNS地址

        /// <summary>/// 备用DNS地址/// </summary>public string DnsBackup{get{var dnsBackup = string.Empty;if (DnsAddresses.Count > 1){if (IsIPAddress(DnsAddresses[1].ToString())){dnsBackup = DnsAddresses[1].ToString();}}else{dnsBackup = string.Empty;}return dnsBackup;}set { if (value == null) throw new ArgumentNullException(nameof(value)); }}

(7).子网掩码

        /// <summary>/// 子网掩码/// </summary>public string Mask{get{string mask;var address = GetAddress();if (address == null){mask = "";}else{if (address.IPv4Mask != null) {mask = address.IPv4Mask.ToString();}else{mask = "255.255.255.0";}}return mask;}set { if (value == null) throw new ArgumentNullException(nameof(value)); }}

(8).属性

       /// <summary>/// DNS集合/// </summary>public IPAddressCollection DnsAddresses { get; set; }/// <summary>/// 网关地址集合/// </summary>public GatewayIPAddressInformationCollection Getwaryes { get; set; }/// <summary>/// IP地址集合/// </summary>public UnicastIPAddressInformationCollection IpAddresses { get; set; }/// <summary>/// DHCP地址集合/// </summary>public IPAddressCollection DhcpServerAddresses { get; set; }/// <summary>/// 网卡MAC地址/// </summary>public PhysicalAddress MacAddress { get; set; }/// <summary>/// 是否启用DHCP服务/// </summary>public bool IsDhcpEnabled { get; set; }/// <summary>/// 描述信息/// </summary>public string Description { get; set; }/// <summary>/// 网络接口类型/// </summary>/// <returns></returns>public string NetworkInterfaceType { get; set; }/// <summary>/// 速度/// </summary>public string Speed { get; set; } 

(9).是否是IP地址

        /// <summary>/// 是否是IP地址/// </summary>/// <param name="ipAddress"></param>/// <returns></returns>public bool IsIPAddress(string ipAddress){const string regexStr = @"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$";var regex = System.Text.RegularExpressions.Regex.Match(ipAddress, regexStr);return regex.Success;}

(10).启用DHCP服务

        /// <summary>/// 启用DHCP服务/// </summary>public bool EnableDhcp(){var wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");var moc = wmi.GetInstances();foreach (var o in moc){var mo = (ManagementObject) o;if (!(bool)mo["IPEnabled"])continue;if (mo["SettingID"].ToString() != NetworkInterfaceId) continue;mo.InvokeMethod("SetDNSServerSearchOrder", null);mo.InvokeMethod("EnableDHCP", null);}//查询现适配器接口信息var networkAdapter = new NetworkAdapterUtil().GetNeworkAdapterByNetworkInterfaceId(NetworkInterfaceId); return networkAdapter != null && networkAdapter.IsDhcpEnabled;}

(11).设置IP地址,子网掩码,网关,DNS

        /// <summary>/// 设置IP地址,子网掩码,网关,DNS,/// </summary>public bool SetIpAddressSubMaskDnsGetway(string ipAddress, string subMask, string getWay, string dnsMain, string dnsBackup){string[] dnsArray;if (string.IsNullOrEmpty(dnsBackup)){dnsArray = new[] { dnsMain };}else{dnsArray = new[] { dnsMain, dnsBackup };}return SetIpAddress(new[] { ipAddress }, new[] { subMask }, new[] { getWay }, dnsArray);}/// <summary>/// 设置IP地址和子网掩码/// </summary>public bool SetIpAddressAndSubMask(string ipAddress, string subMask){return SetIpAddress(new[] { ipAddress }, new[] { subMask }, null, null);}/// <summary>/// 设置IP网关/// </summary>public bool SetGetWayAddress(string getWay){return SetIpAddress(null, null, new[] { getWay }, null);}

(12).设置主,备份DNS地址

        /// <summary>/// 设置主,备份DNS地址/// </summary>public bool SetDnsAddress(string dnsMain, string dnsBackup){string[] dnsArray;if (string.IsNullOrEmpty(dnsBackup)){dnsArray = new[] { dnsMain };}else{dnsArray = new[] { dnsMain, dnsBackup };}return  SetIpAddress(null, null, null, dnsArray);}

(13).得到IPV4地址

        /// <summary>/// 得到IPV4地址/// </summary>/// <returns></returns>private UnicastIPAddressInformation GetAddress(){if (IpAddresses == null || IpAddresses.Count <= 0) return null;switch (IpAddresses.Count){case 3:return IpAddresses[2];case 2:return IpAddresses[1];}return IpAddresses[0];}

(14).检查设置IP地址,如果返回空,表示检查通过,为了方便返回就字符串了

        /// <summary>/// 检查设置IP地址,如果返回空,表示检查通过,为了方便返回就字符串了,没用枚举了/// </summary>/// <param name="ipAddress"></param>/// <param name="subMask"></param>/// <param name="getWay"></param>/// <param name="dnsMain"></param>/// <param name="dnsBackup"></param>/// <returns></returns>public string IsIPAddress(string ipAddress, string subMask, string getWay, string dnsMain, string dnsBackup){if (!string.IsNullOrEmpty(ipAddress)){if (!IsIPAddress(ipAddress)) return "IP地址格式不对";}if (!string.IsNullOrEmpty(subMask)){if (!IsIPAddress(subMask)) return "子网掩码格式不对";}if (!string.IsNullOrEmpty(getWay)){if (!IsIPAddress(getWay)) return "网关地址格式不对";}if (!string.IsNullOrEmpty(dnsMain)){if (!IsIPAddress(dnsMain)) return "主DNS地址格式不对";}if (string.IsNullOrEmpty(dnsBackup)) return "";return !IsIPAddress(dnsBackup) ? "备用DNS地址格式不对" : "";}

(15).设置IP地址

        /// <summary>/// 设置IP地址/// </summary>/// <param name="ip"></param>/// <param name="submask"></param>/// <param name="getway"></param>/// <param name="dns"></param>private bool SetIpAddress(IEnumerable ip, IEnumerable submask, IEnumerable getway, IEnumerable dns){var wmi = new ManagementClass("Win32_NetworkAdapterConfiguration");var moc = wmi.GetInstances();foreach (var o in moc){var mo = (ManagementObject) o;if (!(bool)mo["IPEnabled"])continue;if (NetworkInterfaceId != mo["SettingID"].ToString()) continue;ManagementBaseObject inPar;ManagementBaseObject outPar;string str = null;if (ip != null && submask != null){inPar = mo.GetMethodParameters("EnableStatic");inPar["IPAddress"] = ip;inPar["SubnetMask"] = submask;outPar = mo.InvokeMethod("EnableStatic", inPar, null);if (outPar != null) str = outPar["returnvalue"].ToString();return (str=="0"||str=="1");//获取操作设置IP的返回值, 可根据返回值去确认IP是否设置成功。 0或1表示成功
                }if(getway!=null){inPar = mo.GetMethodParameters("SetGateways");inPar["DefaultIPGateway"] = getway;outPar = mo.InvokeMethod("SetGateways", inPar, null);if (outPar != null) str = outPar["returnvalue"].ToString();return (str == "0" || str == "1");}if (dns == null) continue;inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");inPar["DNSServerSearchOrder"] = dns;outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);if (outPar != null) str = outPar["returnvalue"].ToString();return (str == "0" || str == "1");}return false;} 

C#的网络适配器操作相关推荐

  1. IPv6地址—学习(一)

    IPv6地址表示方法 总长度为128比特,通常分为8组,每组有4个十六进制数,每组十六进制数间用冒号分隔: 例如:2021:0000:0000:1207:3210:320E:235C:43EB 为了书 ...

  2. USG6000V防火墙WEB登录界面超详细配置过程

    防火墙在企业中的应用非常广泛,几乎现在每个公司的网络中都会用到防火墙,或多或少做一些安全策略.公司中也一定存在着负责日常维护这些网络设备的工作人员.如果稍微专业一点,可能他们会通过直接敲命令的方式来管 ...

  3. 关于大型网站技术演进的思考

    关于大型网站技术演进的思考(一)--存储的瓶颈(1) 前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出 ...

  4. Windows7无法自动将IP协议堆栈绑定到网络适配器的办法

    win7台式机插入无线网卡,无线网络无法启用,点击启用,显示已启用,但图标还是灰色,如图 解决办法: 1.检查是否禁用了网络适配器:计算机图标右键-管理-设备管理器-网络适配器-右键-启用 2.计算机 ...

  5. 常用的linux的命令行操作

    2019独角兽企业重金招聘Python工程师标准>>> 系统信息  arch 显示机器的处理器架构(1)  uname -m 显示机器的处理器架构(2)  uname -r 显示正在 ...

  6. ForefrontTMG关于单一的网络适配器限制

    来自于ISA2008的帮助文件. Microsoft Forefront Threat Management Gateway 可以安装在具有单一网络适配器的计算机上. 通常,当 Forefront T ...

  7. PowerShell2.0之维护网络(三)设置网络适配器

    如果计算机中有多个网络适配器,在Windows原有的cmd下配置其属性很困难,用户必须确保配置了适当的适配器并确认要禁用的不是正在使用中的网络适配器.本节介绍在处理多个网络适配器时可能出现的问题及其解 ...

  8. 虚拟机VMware操作系统安装

    VM(Virtual Machine)--虚拟机,指由Vmware模拟出来的一台虚拟的计算机,也即逻辑上的一台计算机. 虚拟机技术是虚拟化技术的一种,所谓虚拟化技术就是将事物从一种形式转变成另一种形式 ...

  9. win7网络适配器_Win7系统笔记本电脑连接蓝牙音箱的操作方法

    Win7系统笔记本电脑如何使用蓝牙连接蓝牙音箱呢?不少用户都有用蓝牙音箱,但是却不了解如何使用笔记本进行连接,下面就给大家分享Win7系统笔记本电脑连接蓝牙音箱的操作方法. 解决方法: 1.首先我们在 ...

最新文章

  1. 数据备份_「Cassandra实战」Cassandra数据备份
  2. 事物(Jdbc) 例子
  3. 使用debug工具修改寄存器中的值
  4. [转]快速清除SQL Server日志的两种方法
  5. boot定时任务开启和关闭 spring_Spring之定时任务实践
  6. 中年人需要写个遗嘱吗?
  7. Android 中Base64的操作
  8. 再见,中关村“金三角”!
  9. sqlite工作记录-1数据库数据写入-转
  10. 蓝桥杯ALGO-125算法训练 王、后传说(回溯、递归)
  11. Java list中的对象转为list,list中的对象转为map
  12. ​知者见于未萌:百度CTO王海峰与中国 AI 三十年
  13. ubuntu 18.04 解决无法联网的问题
  14. 习题第一章 构造过程抽象
  15. 【优化算法】多目标水母搜索优化算法 (MOJS) 【含Matlab源码 248期】
  16. 动易CMS2006安装与配置
  17. MySQL配置root远程连接mysql授权远程
  18. cinta作业6:拉格朗日定理
  19. 【资损】资损防控的系统规范-收单类服务设计
  20. 硬盘开启NCQ功能全解

热门文章

  1. Spring源码分析之 lazy-init 实现原理
  2. mongodb的锁和高并发
  3. Spring学习总结(4)——Spring AOP教程
  4. Python实现链表
  5. TCP端口状态说明ESTABLISHED、TIME_WAIT、 CLOSE_WAIT
  6. Android SurfaceView 绘图及帧频处理方法修正
  7. 将java项目传输到centos7服务端
  8. django基本操作
  9. unity 在代码中创建spine动画组件
  10. Spring+MyBatis