第03章 IP地址转换与网卡信息检测_第1页
第03章 IP地址转换与网卡信息检测_第2页
第03章 IP地址转换与网卡信息检测_第3页
第03章 IP地址转换与网卡信息检测_第4页
第03章 IP地址转换与网卡信息检测_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 11、网络上如何区分主机?、网络上如何区分主机?MAC还是还是IP?2、IP的用处?的用处?3、如何获取本机、如何获取本机IP?能够获取远程异地的主机?能够获取远程异地的主机IP?如何获取?如何获取?4、驱动精灵、硬件优化大师可以获取你机器网卡的信息,我们、驱动精灵、硬件优化大师可以获取你机器网卡的信息,我们可以自己写个程序做到?可以自己写个程序做到?5、ping命令有什么用?其原理?命令有什么用?其原理?6、Dns是什么,有何用处?在网络原理上知道了是什么,有何用处?在网络原理上知道了DNS名,如何名,如何获取获取IP?问题导入问题导入2 2第第3章章 IP地址转换与网卡信息检测地址转换

2、与网卡信息检测3.1 IP地址转换与域名解析地址转换与域名解析3.2 网卡信息检测与网络流量检测网卡信息检测与网络流量检测3.3 网络数据编码与解码网络数据编码与解码3 3 本章教学目的本章教学目的学习学习IP地址转换的基本方法,了解网卡信息检测与网络流量地址转换的基本方法,了解网卡信息检测与网络流量检测相关类的用法,掌握编码与解码的概念及用法。检测相关类的用法,掌握编码与解码的概念及用法。 本章教学要求本章教学要求(1)掌握)掌握IP地址、端口号的基本概念;地址、端口号的基本概念;(2)掌握)掌握IPAddress、IPEndPoint、IPHostEntry类的用法类的用法 ;(3)进行)

3、进行Dns类完成域名解析的方法。类完成域名解析的方法。(4)掌握)掌握Ping类的用法;类的用法;(5)了解)了解NetworkInterface类、类、IPInterfaceProperties类类获取获取网卡信息的方法网卡信息的方法;本章重点本章重点4 4 本章教学要求(续)本章教学要求(续)(6)了解)了解IPGlobalProperties 类获取网络流量统计信息的方法。类获取网络流量统计信息的方法。(7)掌握编码、解码的概念。)掌握编码、解码的概念。(8)掌握)掌握Encoding类的用法。类的用法。(9)了解)了解Encoder类和类和Decoder类的用法。类的用法。 教学难点和

4、重点教学难点和重点 IP地址转换的基本方法,掌握编码与解码的概念及用法。地址转换的基本方法,掌握编码与解码的概念及用法。本章重点本章重点5 53.1 IP地址转换与域名解析地址转换与域名解析3.1.1 IP地址与端口地址与端口 IP地址、端口号的基本概念知识地址、端口号的基本概念知识3.1.2 IP地址转换相关类地址转换相关类 IPAddress、IPEndPoint、IPHostEntry类的用法类的用法3.1.3 域名解析域名解析 Dns类进行域名解析的方法类进行域名解析的方法6 63.1.1 IP地址与端口地址与端口 TCP/IP(传输控制协议(传输控制协议/网际协议)不是网际协议)不是

5、一个一个协议,而是协议,而是一组一组协议的总称,包括协议的总称,包括IP、TCP、UDP、ICMP、ARP等。它规范等。它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据交换格式以及传送方式。间的数据交换格式以及传送方式。7 73.1.1 IP地址与端口地址与端口 (续)(续) IP地址:地址:是给每个连接在因特网上的主机(或路由器)分配一个在是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围内惟一的标识符。一个全世界范围内惟一的标识符。一个IP地址主要由两部分组成:网络地址主要由两部分组成:网络地址和主机地址。地址

6、和主机地址。 网络地址由因特网权力机构分配,主机地址由各个网络的管理员统网络地址由因特网权力机构分配,主机地址由各个网络的管理员统一分配。一分配。 IP地址编制方案地址编制方案有两种:有两种:IPV4和和IPV6IPV4:二进制表示共:二进制表示共32位(位(4个字节)个字节)IPV6:二进制表示共:二进制表示共128位(位(16个字节)个字节) 在在IPV4编制方案中,一般使用点分十进制表示法表示编制方案中,一般使用点分十进制表示法表示IP地址。例如:地址。例如:8 83.1.1 IP地址与端口地址与端口 (续)(续) 子网掩码:子网掩码:子网掩码用于屏蔽子网掩码用于屏

7、蔽IP地址的一部分以区别网络地址的一部分以区别网络标识和主机标识。把所有的网络位(二进制)用标识和主机标识。把所有的网络位(二进制)用1来标识,来标识,主机位用主机位用0来标识。来标识。 例如例如:对于对于IP地址地址192.168.0.X,可以将子网掩码设置为,可以将子网掩码设置为,对于,对于IP地址地址192.168.0.X,其网络标示部分为其网络标示部分为192.168.0;主机标示为:;主机标示为:X9 93.1.1 IP地址与端口地址与端口 (续)(续) 端口:端口:IP地址仅仅能够具体标识到某台主机,而端口则表地址仅仅能够具体标识到某台主机,而端口则表示与

8、计算机上的哪个进程通信。示与计算机上的哪个进程通信。 根据根据IP地址找到是与哪台机器通信,根据端口号找到是与地址找到是与哪台机器通信,根据端口号找到是与该机器的哪个进程通信。该机器的哪个进程通信。 (一个进程可能会使用多个端一个进程可能会使用多个端口口) 端口地址的范围是十进制的端口地址的范围是十进制的06553510103.1.2 IP地址转换相关类地址转换相关类 IPAddress类类(System.Net命名空间下命名空间下):常用常用IPAddress的的Parse方法方法将将IP地址字符串转换为地址字符串转换为IPAddress的实例。的实例。例如:例如:IPAddress ip

9、= IPAddress.Parse(“”); 构造函数构造函数有:有:(1)public IPAddress (byte address) byte iparray = new byte 143,24,20,36 ; IPAddress localIP = new IPAddress(iparray); (2)public IPAddress (long newAddress) long ip = 0 x2414188f; IPAddress localIP = new IPAddress(ip);11113.1.2 IP地址转换相关类地址转换相关类 (续)(续) IPA

10、ddress类常用属性类常用属性Any 提供一个提供一个IPv4地址,指示服务器应侦听所有网络接地址,指示服务器应侦听所有网络接口上的客户端活动。(等效于口上的客户端活动。(等效于)Broadcast 提供提供IPv4广播地址(等效于广播地址(等效于55)Loopback 表示表示IPv4回送地址(等效于回送地址(等效于)None 表示表示Socket不应侦听客户端活动(不使用任何网不应侦听客户端活动(不使用任何网络接口)。络接口)。IPv6Any 提供可用的提供可用的IPv6地址地址IPv6Loopback 表示表示IPv6回送地址回

11、送地址1.IPv6None 提供不使用任何网络接口。提供不使用任何网络接口。12123.1.2 IP地址转换相关类地址转换相关类 (续)(续) IPEndPoint类包含了连接到主机上的服务所需的类包含了连接到主机上的服务所需的IP地址和地址和端口信息。端口信息。 IPEndPoint类常用的构造函数为:类常用的构造函数为:public IPEndPoint(IPAddress, int); 其中第一个参数指定其中第一个参数指定IP地址,第二个参数指定端口号。地址,第二个参数指定端口号。13133.1.2 IP地址转换相关类地址转换相关类 (续)(续) IPHostEntry类的对象中包含了与

12、主机相关的信息。常用属性:类的对象中包含了与主机相关的信息。常用属性:(1)AddressList属性属性:获取或设置与主机关联的获取或设置与主机关联的IP地址列表,是一个地址列表,是一个IPAddress类型类型的数组,包含了指定主机的所有的数组,包含了指定主机的所有IP地址;地址; (2)HostName属性:包含了服务器的主机名。属性:包含了服务器的主机名。(3)Aliases属性包含了与主机关联的别名列表。属性包含了与主机关联的别名列表。在在Dns类中,有一个专门获取类中,有一个专门获取IPHostEntry对象的方法。对象的方法。 例如:例如:IPAddress ips = Dns.

13、GetHostEntry(“http:/).AddressList;14143.1.3 域名解析域名解析 DNS(Domain Name System,域名系统)提供了一系列静,域名系统)提供了一系列静态的方法,用于获取提供本地或远程域名等功能态的方法,用于获取提供本地或远程域名等功能,常用方法有:常用方法有: (1)GetHostAddresses方法方法 获取指定主机的获取指定主机的IP地址,返回一个地址,返回一个IPAddress类型的数组。格类型的数组。格式为:式为: public static IPAddress GetHostAddresses(string hostNameOrA

14、ddress);例如:例如:IPAddress ips=Dns.GetHostAddresses();注意:如果注意:如果hostNameOrAddress是是IP地址,则不查询地址,则不查询DNS服务器,直接返回此地址。服务器,直接返回此地址。15153.1.3 域名解析(续)域名解析(续)(2)GetHostEntry方法方法 在在DNS服务器中查询与某个主机名或服务器中查询与某个主机名或IP地址关联的地址关联的IP地址。地址。当参数为空字符串时,此方法返回本地主机的当参数为空字符串时,此方法返回本地主机的IPv4地址和主机名。地址和主机名。例如:例如:IPHostEntry host =

15、 Dns.GetHostEntry();listBox1.Items.AddRange(host.AddressList); /本机所有本机所有IPv4地址地址listBox1.Items.Add(host.HostName); /本机主机名本机主机名(3) GetHostName方法方法获取本机主机名。获取本机主机名。例如:例如:string hostname = Dns.GetHostName();16163.1.3 域名解析(续)域名解析(续) 【例【例3-1】演示】演示IPAddress类、类、Dns类、类、IPHostEntry类和类和IPEndPoint类的使用方法,设计界面如图类

16、的使用方法,设计界面如图2-1所示。单击所示。单击“显示显示本机本机IP信息信息”按钮可以显示主机名及相关的按钮可以显示主机名及相关的IP地址;单击地址;单击“显示服务器信息显示服务器信息”按钮可显示中央电视台服务器的按钮可显示中央电视台服务器的IP地址地址信息。信息。17173.2 网卡信息检测与网络流量检测网卡信息检测与网络流量检测3.2.1 网卡信息检测相关类网卡信息检测相关类3.2.2 网络流量信息检测相关类网络流量信息检测相关类3.2.3 Ping及其相关类及其相关类18183.2 网卡信息检测与网络流量检测网卡信息检测与网络流量检测 网络适配器:网络适配器:又称网卡或网络接口卡(又

17、称网卡或网络接口卡(NIC),是连接计算机与网络的),是连接计算机与网络的硬件设备。整理计算机上发往网线上的数据,并将数据分解硬件设备。整理计算机上发往网线上的数据,并将数据分解为适当大小的数据包之后向网络上发送。为适当大小的数据包之后向网络上发送。 System.Net.NetworkInformation命名空间提供了:命名空间提供了:对本机网卡相关信息的检测对本机网卡相关信息的检测比如本机有多少网卡,网卡名称、速度、硬件地址等。比如本机有多少网卡,网卡名称、速度、硬件地址等。对本机网络流量的检测对本机网络流量的检测比如网络连接配置、接收与发送的数据包等。比如网络连接配置、接收与发送的数据

18、包等。1.Ping类类检测本机是否可访问网络上的其它计算机。检测本机是否可访问网络上的其它计算机。19193.2 网卡信息检测与网络流量检测网卡信息检测与网络流量检测 NetworkInterface类类NetworkInterface类提供了网络适配器的配置和统计信息。类提供了网络适配器的配置和统计信息。可以利用这个类检测本机有多少个网络适配器、网络适配可以利用这个类检测本机有多少个网络适配器、网络适配器型号以及网络适配器的速度等。器型号以及网络适配器的速度等。 IPInterfaceProperties类类可以利用这个类检测本机所有网络适配器支持的各种地址可以利用这个类检测本机所有网络适配

19、器支持的各种地址 PhysicalAddress类类提供了网络适配器的媒体访问控制提供了网络适配器的媒体访问控制(MAC)地址。地址。 20203.2.1 网卡信息检测相关类网卡信息检测相关类1NetworkInterface类类 位于位于System.Net.NetworkInformation命名空间下,它提命名空间下,它提供了网络适配器的配置和统计信息。该类可以方便地检测供了网络适配器的配置和统计信息。该类可以方便地检测本机有多少个网卡、哪些网络连接可用,并可获取某个网本机有多少个网卡、哪些网络连接可用,并可获取某个网卡的型号、卡的型号、MAC地址和速度等信息。地址和速度等信息。 对于本

20、机的每个网络适配器,该数组中都包含一个对于本机的每个网络适配器,该数组中都包含一个NetworkInterface对象与之对应。对象与之对应。 获取实例:获取实例:不能直接使用不能直接使用new关键字构造该类的实例,而关键字构造该类的实例,而是利用是利用NetworkInterface类提供的静态方法类提供的静态方法GetAllNetworkInterfaces,得到,得到NetworkInterface类型的数组。类型的数组。NetworkInterface adapters = NetworkInterface.GetAllNetworkInterfaces();21213.2.1 网卡信

21、息检测相关类(续)网卡信息检测相关类(续) NetworkInterface类常用的属性和方法类常用的属性和方法 属性及方法属性及方法说明Name属性属性获取网络适配器的名称Speed属性属性获取网络适配器的速度(bit/秒)GetAllNetworkInterfaces方法方法返回描述本地计算机上的所有网络适配器对象GetIPProperties方法方法回描述此网络适配器配置的对象GetIsNetworkAvailable方法方法指示是否有任何可用的网络连接GetPhysicalAddress方法方法返回此适配器的媒体访问控制(MAC)地址Supports方法方法指示接口是否支持指定的协议(

22、IPv4或IPv6)22223.2.1 网卡信息检测相关类(续)网卡信息检测相关类(续)2.IPInterfaceProperties类:类: 检测本机所有网络适配器支持的各种地址(检测本机所有网络适配器支持的各种地址(IPv4和和IPv6的的网络适配器地址信息),如网络适配器地址信息),如Dns服务器的服务器的IP地址、网关地地址、网关地址以及多路广播地址。址以及多路广播地址。 获取实例:获取实例: NetworkInterface adapters = NetworkInterface.GetAllNetworkInterfaces();IPInterfaceProperties adap

23、terProperties = adapters0.GetIPProperties();23233.2.1 网卡信息检测相关类(续)网卡信息检测相关类(续) IPInterfaceProperties类常用的属性和方法类常用的属性和方法 属性及方法说 明AnycastAddresses属性获取分配给此接口的任意广播IP地址DhcpServerAddresses属性获取此接口的动态主机配置协议(DHCP)服务器的地址DnsAddresses属性获取此接口的域名系统(DNS)服务器的地址DnsSuffix属性获取与此接口关联的域名系统(DNS)后缀GatewayAddresses属性获取此接口的网

24、关地址MulticastAddresses属性获取分配给此接口的多路广播地址UnicastAddresses属性获取分配给此接口的单播地址GetIPv4Properties方法获取此网络接口的Internet协议版本4(IPv4)配置数据GetIPv6Properties方法获取此网络接口的Internet协议版本6(IPv6)配置数据24243.2.1 网卡信息检测相关类(续)网卡信息检测相关类(续) 【例【例3-2】获取本机网络适配器的个数、型号、速度、】获取本机网络适配器的个数、型号、速度、MAC地址以及地址以及DNS服务器信息。服务器信息。 25253.2.2 网络流量信息检测相关类网

25、络流量信息检测相关类 IPGlobalProperties类类 提供本地计算机网络连接相关的信息。例如网络连接配置、提供本地计算机网络连接相关的信息。例如网络连接配置、接收与发送的数据包等。接收与发送的数据包等。 IPGlobalProperties properties = IPGlobalPropeties.GetIPGlobalProperties(); IPGlobalProperties properties = IPGlobalPropeties.GetIPGlobalProperties() IPGlobalStatistics ipstat = properties.GetIP

26、v4GlobalStatistics(); listBox1.Items.Add(本机所在域本机所在域 : + properties.DomainName); listBox1.Items.Add(接收数据包数接收数据包数 : + ipstat.ReceivedPackets); listBox1.Items.Add(转发数据包数转发数据包数 : + ipstat.ReceivedPacketsForwarded);26263.2.2 网络流量信息检测相关类(续)网络流量信息检测相关类(续) TcpConnectionInformation类类提供有关本地计算机上的传输控制协议提供有关本地计算

27、机上的传输控制协议(TCP)连接的信息。连接的信息。IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties();TcpConnectionInformation connections = properties.GetActiveTcpConnections();foreach (TcpConnectionInformation t in connections) string str = ; str += Local endpoint: + t.LocalEndPoint.Address; str +=

28、 ,Remote endpoint: + t.RemoteEndPoint.Address; str += , + t.State; listBox1.Items.Add(str);27273.2.2 网络流量信息检测相关类(续)网络流量信息检测相关类(续) 【例【例3-3】检测本机网络流量以及】检测本机网络流量以及TCP连接信息。连接信息。28283.2.3 Ping及其相关类及其相关类 可以使用可以使用Ping类检测本机是否可访问网络上的其它计算机。类检测本机是否可访问网络上的其它计算机。类似于类似于Ping.exe命令行工具。命令行工具。 该类提供的该类提供的Send和和SendAsyn

29、c方法将方法将Internet控制消息控制消息协议协议(ICMP)回送请求消息发送到远程计算机并等待来自该回送请求消息发送到远程计算机并等待来自该计算机的计算机的ICMP回送答复消息。回送答复消息。 与与Ping类一起使用的类型有:类一起使用的类型有: IPStatus枚举:定义描述枚举:定义描述 ICMP 回送请求消息结果的状回送请求消息结果的状态代码态代码 PingOptions类:控制如何传输类:控制如何传输 Ping 数据包数据包1. PingReply类:提供有关类:提供有关 Send 或或 SendAsync 操作的状操作的状态及产生的数据的信息态及产生的数据的信息 29293.2

30、.3 Ping及其相关类及其相关类Ping类类Send方法方法(1)public PingReply Send(IPAddress address)此方法向此方法向address参数指定的主机发送一个包含回送消息参数指定的主机发送一个包含回送消息的的32位位Byte数据,然后等待应答消息数据,然后等待应答消息5秒钟。如果在上述秒钟。如果在上述时间内没有收到应答,则直接返回,并将时间内没有收到应答,则直接返回,并将PingReply实例实例的的Status属性设置为属性设置为TimedOut。例如:。例如:Ping pingSender = new Ping ();PingReply reply

31、 = pingSender.Send ();30303.2.3 Ping及其相关类及其相关类Ping类类Send方法方法(2)public PingReply Send(string hostNameOrAddress,int timeout,byte buffer,PingOptions options)参数说明:参数说明:uhostNameOrAddress表示目标计算机表示目标计算机IP地址或者主机名。地址或者主机名。utimeout指定发送回送消息后,等待答复消息的最大毫秒指定发送回送消息后,等待答复消息的最大毫秒数。数。uBuffer是一个是一个Byte数组,存放和回送消息一起发送的

32、数据。数组,存放和回送消息一起发送的数据。uOptions是一个是一个PingOptions对象,用于控制如何传输对象,用于控制如何传输Ping数据包。数据包。31313.2.3 Ping及其相关类(续)及其相关类(续) PingOptions类:控制如何传输类:控制如何传输 Ping 数据包。与此类相数据包。与此类相关的属性有:关的属性有: Ttl 属性属性为为 Ping 类发送的数据包指定生存时间。此值指示在丢弃类发送的数据包指定生存时间。此值指示在丢弃 Ping 数据包之前可以转发此数据包的路由节点数。如果数据包之前可以转发此数据包的路由节点数。如果要测试将数据包从源计算机发送到目标计算

33、机所需的转发要测试将数据包从源计算机发送到目标计算机所需的转发数(也称为跃点),设置此选项很有用。数(也称为跃点),设置此选项很有用。1. DontFragment 属性属性控制是否可将发送到远程主机的数据分成多个数据包。如控制是否可将发送到远程主机的数据分成多个数据包。如果要测试用于传输数据包的路由器和网关的最大传输单元果要测试用于传输数据包的路由器和网关的最大传输单元 (MTU),此选项很有用。,此选项很有用。32323.2.3 Ping及其相关类(续)及其相关类(续)PingReply类类调用调用Ping类的类的Send方法后,即得到方法后,即得到PingReply类的实类的实例,该实例

34、提供有关例,该实例提供有关Send或或SendAsync操作的状态以及操作的状态以及发送请求和接收答复所用的时间等信息。常用属性有发送请求和接收答复所用的时间等信息。常用属性有 1. Address属性:属性:获取发送回送答复消息的主机地址获取发送回送答复消息的主机地址 2. RoundtripTime属性:属性: 获取发送消息所用的往返时间获取发送消息所用的往返时间 3. Status属性:属性:获取答复的状态,为获取答复的状态,为IPStatus枚举类型。如果值为枚举类型。如果值为IPStatus.Success则代表则代表Send方法执行成功方法执行成功33333.2.3 Ping及其相

35、关类(续)及其相关类(续) 【例【例3-4】Ping类的用法。类的用法。 34343.3 网络数据编码与解码网络数据编码与解码3.3.1 Encoding类类3.3.2 Encoder类和类和Decoder类类35353.3 网络数据编码与解码网络数据编码与解码 编码:编码:是指将一组字符转换为一个字节序列的过程。是指将一组字符转换为一个字节序列的过程。 解码:解码:将一个编码字节序列转换为一组字符的过程。将一个编码字节序列转换为一组字符的过程。 为什么需要编码和解码为什么需要编码和解码因为通过网络传递的数据必须是字节序列。因为通过网络传递的数据必须是字节序列。 常用编码:常用编码:ASCII

36、、Unicode、UTF、国标码、国标码36363.3 网络数据编码与解码网络数据编码与解码 常用编码常用编码ASCII码:每个字符均为码:每个字符均为7位,主要针对英文。位,主要针对英文。UNICODE码:每个字符均占两个字节。码:每个字符均占两个字节。UTF码:通用转换码,主要解决编码容量问题,常用有码:通用转换码,主要解决编码容量问题,常用有(1)UTF-8:用:用1到到4个字节编码一个个字节编码一个UNICODE字符字符 (2)UTF-16:将每个字符编码为:将每个字符编码为1至至2个个16位整数组成的位整数组成的序列序列 (3)UTF-32:将每个字符编码为一个:将每个字符编码为一个

37、32位整数位整数 1.国标码:常用有国标码:常用有 GB2312(1980年公布)年公布) GB18030(2000年公布)年公布)37373.3.1 Encoding类类 Encoding类位于类位于System.Text命名空间中。常用属性及方法如下命名空间中。常用属性及方法如下:名称说明Default属性获取系统的当前ANSI代码页的编码Unicode属性获取使用 Little-Endian 字节顺序的 UTF-16 格式的编码UTF8属性获取UTF-8格式的编码Convert方法将字节数组从一种编码转换为另一种编码GetBytes方法将一组字符编码为一个字节序列GetString方法将

38、一个字节序列解码为一个字符串GetEncoder方法获取一个解码器,该解码器将Unicode字符序列转换为已编码的字节序列GetDecoder方法获取一个解码器,该解码器将已编码的字节序列转换为字符序列38383.3.1 Encoding类(续)类(续)1获取所有编码名称及其描述信息获取所有编码名称及其描述信息GetEncodings方法获得包含所有编码的方法获得包含所有编码的EncodingInfo数组。下面的代码可以获取所有编码的名称及其名称描述。数组。下面的代码可以获取所有编码的名称及其名称描述。foreach (EncodingInfo ei in Encoding.GetEncodi

39、ngs() Encoding en = ei.GetEncoding(); listBox1.Items.Add(string.Format(0,-181, ei.Name, en.EncodingName);39393.3.1 Encoding类(续)类(续)2获取某个指定的编码描述信息获取某个指定的编码描述信息1)访问)访问UTF8、ASCII等属性,直接获得其他非等属性,直接获得其他非Unicode的某的某个指定字符集的编码实例。个指定字符集的编码实例。uEncoding ASCIIEncode = Encoding.ASCII;2)利用静态方法)利用静态方法GetEndcoing来获取

40、编码实例,例如:来获取编码实例,例如:uEncoding GB2312Encoding = Encoding.GetEncoding(GB2312);3)访问)访问HeaderName属性,获取指定编码的名称属性,获取指定编码的名称ulistBox1.Items.Add(GB2312Encoding. HeaderName);14)访问)访问EncodingName属性,显示指定编码的名称描述属性,显示指定编码的名称描述ulistBox1.Items.Add(GB2312Encoding.EncodingName);40403.3.1 Encoding类(续)类(续)3不同编码之间的转换不同编

41、码之间的转换 功能:功能:Encoding类的类的Convert方法可将字节数组从一种编方法可将字节数组从一种编码转换为另一种编码,转换结果类型为码转换为另一种编码,转换结果类型为byte 。 方法原型:方法原型:public static byte Convert(Encoding srcEncoding, Encoding dstEncoding, byte bytes) 参数说明:参数说明:usrcEncoding表示源编码格式。表示源编码格式。udstEncoding表示目标编码格式。表示目标编码格式。ubytes参数指定了待转换的字节数。参数指定了待转换的字节数。u将将Unicode

42、字符串转换为字符串转换为UTF8字符串时,可参考以下的步字符串时,可参考以下的步骤进行。骤进行。41413.3.1 Encoding类(续)类(续) 将将Unicode字符串转换为字符串转换为UTF8字符串:字符串:(1)利用)利用Encoding的的UTF8和和Unicode属性获取属性获取UTF8格式格式的编码实例的编码实例utf8和和Unicode格式的编码实例格式的编码实例unicode,例如:,例如:string unicodeString = 含含unicode字符字符Pi(u03a0);Encoding unicode = Encoding.Unicode;Encoding ut

43、f8 = Encoding.UTF8;(2)利用)利用unicode的的GetBytes方法将方法将Unicode字符编码为字符编码为Unicode字节数组,例如:字节数组,例如:byte unicodeBytes = unicode.GetBytes(unicodeString);42423.3.1 Encoding类(续)类(续)(3)利用)利用Encoding的的Convert方法将方法将Unicode字节数组转换字节数组转换为为UTF8字节数组,例如:字节数组,例如:byte utf8Bytes = Encoding.Convert(Encoding.Unicode, Encoding

44、.UTF8, unicodeBytes);(4)最后,利用)最后,利用ut8的的GetString方法将方法将UTF8字节数组解码字节数组解码为为UTF8字符串,例如:字符串,例如:string utf8String = utf8.GetString(utf8Bytes);43432.3.2 Encoder类和类和Decoder类类 为什么使用为什么使用Encoder及及Decoder类?类?u在网络传输和文件操作中,如果数据量比较大,需要划分在网络传输和文件操作中,如果数据量比较大,需要划分为较小的块,此时可能出现一个数据块的末尾是一个不匹为较小的块,此时可能出现一个数据块的末尾是一个不匹配

45、的高代理项,而与其匹配的低代理项则位于下一个数据配的高代理项,而与其匹配的低代理项则位于下一个数据块中。对于这种情况,直接使用块中。对于这种情况,直接使用Encoding类的类的GetBytes方法编写程序就比较繁琐。此时,可以利用方法编写程序就比较繁琐。此时,可以利用Encoder类轻类轻松地解决这个问题。松地解决这个问题。44443.3.2 Encoder类和类和Decoder类(续)类(续) Encoder类类Encoder类位于类位于System.Text名称空间下,利用它可以名称空间下,利用它可以将一组字符转换为一个字节序列。将一组字符转换为一个字节序列。(1)获取获取Encoder实例:实例:利用利用GetEncoder方法获取实例方法获取实例/获取获取

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论