C# 操作网络适配器的示例

1、对网络适配器进行配置

string ethernetIP = System.Configuration.ConfigurationManager.AppSettings["LocalEthernetIP"].Trim().ToString();
string ethernetSubnetMask = System.Configuration.ConfigurationManager.AppSettings["LocalEthernetSubnetMask"].Trim().ToString();
string ethernetGateway = System.Configuration.ConfigurationManager.AppSettings["LocalEthernetGateway"].Trim().ToString();
string ethernetDNS = System.Configuration.ConfigurationManager.AppSettings["LocalEthernetDNS"].Trim().ToString();

ManagementBaseObject outPar = null;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)
{
  if (!(bool)mo["IPEnabled"])
  {
    continue;
  }
  //设置IP地址
  ManagementBaseObject inPar = mo.GetMethodParameters("EnableStatic");
  if (!string.IsNullOrEmpty(ethernetIP))
  {
    inPar["IPAddress"] = new string[] { ethernetIP };
  }
  if (!string.IsNullOrEmpty(ethernetSubnetMask))
  {
    inPar["SubnetMask"] = new string[] { ethernetSubnetMask };
  }
  outPar = mo.InvokeMethod("EnableStatic", inPar, null);
  //设置网关
  inPar = mo.GetMethodParameters("SetGateways");
  if (!string.IsNullOrEmpty(ethernetGateway))
  {
    inPar["DefaultIPGateway"] = new string[] { ethernetGateway };
    outPar = mo.InvokeMethod("SetGateways", inPar, null);
  }
  //设置DNS
  inPar = mo.GetMethodParameters("SetDNSServerSearchOrder");
  if (!string.IsNullOrEmpty(ethernetDNS))
  {
    inPar["DNSServerSearchOrder"] = new string[] { ethernetDNS };
    outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, null);
  }
  break;
}

2、获取网络适配器等相关信息

//获取说有网卡信息
 NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
 foreach (NetworkInterface adapter in nics)
 {
   //判断是否为以太网卡
   //Wireless80211     无线网卡  Ppp   宽带连接
   //Ethernet       以太网卡
   //这里篇幅有限贴几个常用的,其他的返回值大家就自己百度吧!
   if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
   {
     //获取以太网卡网络接口信息
     IPInterfaceProperties ip = adapter.GetIPProperties();
     //获取单播地址集
     UnicastIPAddressInformationCollection ipCollection = ip.UnicastAddresses;
     foreach (UnicastIPAddressInformation ipadd in ipCollection)
     {
       //InterNetwork  IPV4地址   InterNetworkV6    IPV6地址
       //Max      MAX 位址
       if (ipadd.Address.AddressFamily == AddressFamily.InterNetwork)
         //判断是否为ipv4
         label1.Text = ipadd.Address.ToString();//获取ip
     }
   }
 }
NetworkInterfaceType的返回值如下(以下表格来自msdn):
   成员名        说明
  Unknown   接口类型是未知的。
  Ethernet   网络接口使用以太网连接。 以太网在 IEEE 标准 802.3 中定义。
  TokenRing   网络接口使用令牌环连接。 令牌环在 IEEE 标准 802.5 中定义。
  Fddi   网络接口使用分布式光纤数据接口 (FDDI) 连接。 FDDI 是一组用于局域网中光纤线路上的数据传输的标准。
  BasicIsdn   网络接口使用基本速率接口综合业务数字网 (ISDN) 连接。 ISDN 是一组通过电话线传输数据的标准。
  PrimaryIsdn   网络接口使用主速率接口综合业务数字网 (ISDN) 连接。 ISDN 是一组通过电话线传输数据的标准。
  Ppp   网络接口使用点对点协议 (PPP) 连接。 PPP 是使用串行设备进行数据传输的协议。
  Loopback   网络接口是环回适配器。 此类接口通常用于测试;不通过电缆发送流量。
  Ethernet3Megabit   网络接口使用以太网 3 兆位/秒连接。 以太网的此版本在 IETF RFC 895 中定义。
  Slip   网络接口使用串行线路 Internet 协议 (SLIP) 连接。 SLIP 在 IETF RFC 1055 中定义。
  Atm   网络接口使用异步传输模式 (ATM) 传输数据。
  GenericModem   网络接口使用调制解调器。
  FastEthernetT   网络接口使用基于双绞线的 Fast Ethernet 连接,其数据速率为 100 兆位/秒。 此连接类型也称为 100Base-T。
  Isdn   网络接口使用为 ISDN 和 X.25 协议配置的连接。 X.25 允许公用网络上的计算机使用中间计算机通信。
  FastEthernetFx   网络接口使用基于光纤的 Fast Ethernet 连接,其数据速率为 100 兆位/秒。 此连接类型也称为 100Base-FX。
  Wireless80211   网络接口使用无线 LAN 连接(IEEE 802.11 标准)。
  AsymmetricDsl   网络接口使用非对称数字用户线路 (ADSL)。
  RateAdaptDsl   网络接口使用速率自适应数字用户线路 (RADSL)。
  SymmetricDsl   网络接口使用对称数字用户线路 (SDSL)。
  VeryHighSpeedDsl   网络接口使用超高数据速率数字用户线路 (VDSL)。
  IPOverAtm   网络接口使用 Internet 协议 (IP) 与异步传输模式 (ATM) 相结合来传输数据。
  GigabitEthernet   网络接口使用 Gigabit Ethernet 连接,其数据速率为 1,000 兆位/秒(1 吉比特/秒)。
  Tunnel   网络接口使用隧道连接。
  MultiRateSymmetricDsl   网络接口使用多速率数字用户线路。
  HighPerformanceSerialBus   网络接口使用高性能串行总线。

AddressFamily的返回值如下(以下表格来自msdn):

  成员名称       说明
  AppleTalk     AppleTalk 地址。
  Atm         本机 ATM 服务地址。
  Banyan      Banyan 地址。
  Ccitt       CCITT 协议(如 X.25)的地址。
  Chaos       MIT CHAOS 协议的地址。
  Cluster      Microsoft 群集产品的地址。
  DataKit      Datakit 协议的地址。
  DataLink     直接数据链接接口地址。
  DecNet      DECnet 地址。
  Ecma       欧洲计算机制造商协会 (ECMA) 地址。
  FireFox     FireFox 地址。
  HyperChannel  NSC Hyperchannel 地址。
  Ieee12844    IEEE 1284.4 工作组地址。
  ImpLink     ARPANET IMP 地址。
  InterNetwork  IP 版本 4 的地址。
  InterNetworkV6 IP 版本 6 的地址。
  Ipx        IPX 或 SPX 地址。
  Irda       IrDA 地址。
  Iso        ISO 协议的地址。
  Lat       LAT 地址。
  Max        MAX 地址。
  NetBios      NetBios 地址。
  NetworkDesigners支持网络设计器 OSI 网关的协议的地址。
  NS       Xerox NS 协议的地址。
  Osi       OSI 协议的地址。
  Pup       PUP 协议的地址。
  Sna       IBM SNA 地址。
  Unix      Unix 本地到主机地址。
  Unknown     未知的地址族。
  Unspecified   未指定的地址族。
  VoiceView    VoiceView 地址。

以上就是C# 操作网络适配器的示例的详细内容,更多关于C# 操作网络适配器的资料请关注我们其它相关文章!

(0)

相关推荐

  • c# 适配器模式

    结构图: 客户可以对接的接口类: 复制代码 代码如下: class Target { public virtual void Request() { Console.WriteLine("普通请求!"); } } 客户需要使用适配器才能使用的接口: 复制代码 代码如下: class Adaptee { public void SpecialRequest() { Console.WriteLine("特殊请求!"); } } 适配器的定义:继承与Target类 复制

  • C#列出所有物理网络适配器的方法

    本文实例讲述了C#列出所有物理网络适配器的方法.分享给大家供大家参考.具体如下: using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Management; using System.Text; namespace RobvanderWoude { class ListNICs { public static ArrayList nics

  • 解析C#设计模式编程中适配器模式的实现

    在实际的软件系统设计和开发中,为了完成某项工作需要购买一个第三方的库来加快开发.这带来一个问题,在应用程序中已经设计好的功能接口,与这个第三方提供的接口不一致.为了使得这些接口不兼容的类可以在一起工作,适配器模式提供了一种接口的适配机制. 适配器模式的设计思想在生活中经常会应用到,如我们在给手机充电的时候,不可能直接在220V电源上直接充电,而是用手机充电器转换成手机需要的电压才可以正常充电,否则就不可以完成充电,这个充电器就起到了适配的作用. 1.适配器模式简介 1.1.定义 适配器模式是通过

  • C# 设计模式系列教程-适配器模式

    1. 概述 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 2. 解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 3. 模式中的角色 3.1 目标接口(Target):客户所期待的接口.目标可以是具体的或抽象的类,也可以是接口. 3.2 需要适配的类(Adaptee):需要适配的类或适配者类. 3.3 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接

  • C#设计模式编程中运用适配器模式结构实战演练

    在实际的软件系统设计和开发中,为了完成某项工作需要购买一个第三方的库来加快开发.这带来一个问题,在应用程序中已经设计好的功能接口,与这个第三方提供的接口不一致.为了使得这些接口不兼容的类可以在一起工作,适配器模式提供了一种接口的适配机制. 适配器模式的设计思想在生活中经常会应用到,如我们在给手机充电的时候,不可能直接在220V电源上直接充电,而是用手机充电器转换成手机需要的电压才可以正常充电,否则就不可以完成充电,这个充电器就起到了适配的作用. 适配器模式结构实现 1.类适配器结构实现 ITar

  • C#网络适配器简单操作

    网络的相关设置在项目开发中有较多的应用,有时候需要在项目中对网络信息进行相关设置. 现在提供提供几种相关的辅助方法类. (1).IP地址 /// <summary> /// IP地址 /// </summary> public string IpAddress { get { string ipAddress; var address = GetAddress(); if (address == null) { ipAddress = string.Empty; } else {

  • c#设计模式 适配器模式详细介绍

    后续内容将包括以下结构模式: 适配器模式(Adapter):Match interfaces of different classes合成模式(Composite):A tree structure of simple and composite objects装饰模式(Decorator):Add responsibilities to objects dynamically代理模式(Proxy):An object representing another object享元模式(Flywei

  • C#学习笔记之适配器模式详解

    什么是适配器模式? 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口. Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 什么时候运用适配器模式? 在想使用一个已经存在的类时,如果它的接口,也就是它的方法与我们当前的要求不相同时,就需要考虑用到适配器模式了. 一般而言,使用适配器模式是出于无奈之举,一般存在于软件开发后期或者维护期,在软件设计阶段,我们还是尽量避免该模式的使用. 适配器模式的组成   Target:目标接口,也就是客户所期待的接

  • C# 操作网络适配器的示例

    1.对网络适配器进行配置 string ethernetIP = System.Configuration.ConfigurationManager.AppSettings["LocalEthernetIP"].Trim().ToString(); string ethernetSubnetMask = System.Configuration.ConfigurationManager.AppSettings["LocalEthernetSubnetMask"].T

  • C#操作INI配置文件示例详解

    本文实例为大家分享了C#操作INI配置文件示例的具体代码,供大家参考,具体内容如下 源文件地址:C#操作INI配置文件示例 创建如图所示的控件: 源代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Win

  • python3.7通过thrift操作hbase的示例代码

    HBase是一个分布式的.面向列的开源数据库,其是Apache的Hadoop项目的子项目.HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式.其数据结构类似与Redis的key-value模式. python3.7 通过 thrift , rpc 接口操作 hbase ,指定依赖库为: thrift 和 hbase-thrift . 然而我们 在 python3.7 环境中发现 hbase-thrift-0.20.4 无法

  • spring使用redis操作key-value的示例代码

    连接到 Redis Redis 连接工厂会生成到 Redis 数据库服务器的连接.Spring Data Redis 为四种 Redis 客户端实现提供了连接工厂: JedisConnectionFactory JredisConnectionFactory LettuceConnectionFactory SrpConnectionFactory 具体选择哪一个取决于你.我建议你自行测试并建立基准,进而确定哪一种 Redis 客户端和连接工厂最适合你的需求.从 Spring Data Redi

  • python中pandas库中DataFrame对行和列的操作使用方法示例

    用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFrame ser = Series(np.arange(3.)) data = DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz')) data['w'] #选择表格中的'w'列,使用类字典属性,返回的是S

  • 在Java中操作Zookeeper的示例代码详解

    依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.6.0</version> </dependency> 连接到zkServer //连接字符串,zkServer的ip.port,如果是集群逗号分隔 String connectStr = "192.

  • 使用Java对Hbase操作总结及示例代码

    前面已经给大家讲解过如何使用Hbase建表,以及基本的操作和一些常用shell命令,今天就给大家介绍下如何使用java对Hbase进行各种操作. 没印象的话可以再去浏览下: Hbase入门教程,shell命令大全讲解 Java操作Hbase主要方法: 1.Configuration 在使用Java API时,Client端需要知道HBase的配置环境,如存储地址,zookeeper等信息. 这些信息通过Configuration对象来封装,可通过如下代码构建该对象: Configuration

  • 使用Mybatis对数据库进行单表操作的实现示例

    简介 该篇文章主要是介绍如何使用MyBatis对Mysql数据库进行单表操作(对于mybatis的下载以及配置文件的作用和具体信息,我在上一篇文章中也已经提到了),使用的环境如下: JDK版本:1.8 编译器:IDEA2019 JDBC版本:8.0.18 mybatis版本:3.5.3 配置文件 首先需要有两个配置文件,一个是configuration.xml文件,配置的是连接数据库的环境以及对于mapper.xml文件的映射,还有另一个文件就是mapper.xml,这个文件主要是用来写sql语

  • python操作链表的示例代码

    class Node: def __init__(self,dataval=None): self.dataval=dataval self.nextval=None class SLinkList: def __init__(self): self.headval=None # 遍历列表 def traversal_slist(self): head_node=self.headval while head_node is not None: print(head_node.dataval)

  • python boto和boto3操作bucket的示例

    boto操作 import datetime import boto.s3.connection from boto.s3.key import Key conn = boto.connect_s3( aws_access_key_id="123456", aws_secret_access_key="123456", host="127.0.0.1", port=8080, is_secure=False, calling_format=bot

随机推荐