网络通化前的前置知识
一、IP 类和端口类
1.IP 类和端口类的作用
我们知道想要进行网络通信,进行网络连接 首先我们需要找到对应设备,IP 和端口号是定位网络中设备必不可少的关键元素 C#中提供了财应的 IP 和端口相关的类 来声明对应信息 对于之后的网络通信是必不可少的内容
2.IPAdress 类
命名空间 System.Net
1.)通过 byte 进行初始化
1 | byte[] ipAddress = new byte[] { 118, 102, 111, 11 }; |
2.)通过长整型进行初始化(不建议使用)
1 | IPAddress ip2 = new IPAddress(0x79666F0B); |
3.)通过字符串进行转化(推荐)
1 | IPAddress ip3 = IPAddress.Parse("118.102.111.11"); |
4.)一些静态成员
获取可用的 IPv6 地址 IPAddress.IPv6Any
3.IPEndPoint 类
将网络端点表示 Ip 地址和端口号,表现为 IP 地址和端口号的组合 命名空间 System.Net
1.)初始化
1 | IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("118.102.111.11"), 8080); |
二、域名解析
1.域名解析是什么?
域名解析也叫域名指向、服务器设置、域名配置以及反向 IP 登记等等 说得简单点就是将好记的域名解析成 IP IP 地址是网络上标识站点地址,但是 IP 地址相对来说记忆困难 所以为了方便记忆,采用域名来代替 IP 地址标识站点地址。 比如 我们要登录一个网页 www.baidu.com 这个就是域名 我们可以通过记忆域名来记忆一个远端服务器的地址,而不是记录一个复杂的 IP 地址
域名解析就是域名到 IP 地址的转换过程。 域名的解析工作由 DNS 服务器完成 我们在进行通信时有时会有需求通过域名获取 IP 所以这节课我们就来学习 c#提供的域名解析相关的类 > 域名系统(英文:Domain Name system,缩写:DNS)是互联网的一项服务 > 它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网 > 是因特网上解决网上机器命名的一种系统,因为 IP 地址记忆不方便,就采用了域名系统来管理名字和 IP 的对应关系
三、IPHostEntry 类
命名空间 System.Net 主要作用:域名解析后的返回值 可以通过该对象获取 IP 地址、主机名等等信息 该类不会自己声明,都是作为某些方法的返回值返回信息,我们主要通过该类对象获取返回的信息
- 获取关联 IP 成员变量:AddressList
- 获取主机别名列表 成员变量:Aliases
- 获取 DNS 名称 成员变量:HostName
四、DNS 类
命名空间 System.Net 主要作用:Dns 是一个静态类,提供了很多静态方法,可以使用它来根据域名获取 IP 地址
1.获取本地系统的 IP 信息
1 | //1.获取本地系统的Ip信息 |
2.获取指定域名的 IP 信息
同步获取
1 | //根据域名获取 |
异步获取
1 | GetHostEntry(); |
五、网络上的数据传输
在网络通讯中 我们一般把想要传递的类对象信息先转化为 2 进制数据(多为 byte 字节数组) 再将该 2 进制数据通过网络传输给远端设备 远端设备获取到该 2 进制数据后再将其反序列化为对应的类对象
序列化和反序列化
- 序列化 将类对象信息转化为可保存或传输的格式(例如:二进制、json 字符串、Xml 等等)过程
- 反序列化 将保存或者传输的格式转化为类对象的过程
1.网络通讯相关重要知识点
- Bitconverter 类 主要用于处理各个类型和字节数组之间的相互转化
- Encoding 类 主要用于处理字符串和字节数组之间的相互转化
- 加密相关 了解 2 进制数据加密的常用手段
2.本地持久化相关重要知识点
- File 类 文件操作类,用于操作文件
- FileStream 类 文件流类,以流的形式进行文件储存读取
- MemoryStream 类 内存流类
- BinaryFormatter 类 2 进制格式化对象(网络开发不用这个序列化,其他语言无法识别该类转化的数据)