2022年C#网络通信 .pdf
《2022年C#网络通信 .pdf》由会员分享,可在线阅读,更多相关《2022年C#网络通信 .pdf(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C#网络通信1.网络通信的方式1)同步方式同步方式是指当发送方发送一个数据包以后,一直等到接收方响应后, 才可以发送下一个数据包。 (串行运行 ) 2)异步方式异步方式是指发送方发送数据包以后,不等接收方响应, 就接着发送下一个数据包。 (并行运行 ) 3)阻塞套接字阻塞套接字是指在执行此套接字的网络调用时,直到调用成功才返回, 否则此套接字就一直阻塞在网络调用上。4)非阻塞套接字非阻塞套接字是指在执行此套接字的网络调用时,不管是否执行成功, 都立即返回。2.Dns类、IPAddress类、IPEndPoint 类和 IPHostEntry 类1)Dns类Dns类是一个静态类,它从Intern
2、et 域名系统(DNS) 检索关于特定主机的信息。在IPHostEntry 类的实例中返回来自DNS 查询的主机信息。如果指定的主机在DNS 数据库中有多个入口,则IPHostEntry 包含多个IP 地址和别名。常用方法说明方 法 名 称说明BeginGetHostAddresses异步返回指定主机的Internet 协议( IP)地址BeginGetHostEntry已重载。将主机名或IP 地址异步解析为IPHostEntry 实例EndGetHostAddresses结束对 DNS 信息的异步请求EndGetHostEntry结束对 DNS 信息的异步请求GetHostAddresses
3、返回指定主机的Internet 协议( IP)地址GetHostByAddress已重载。获取IP 地址的 DNS 主机信息GetHostName获取本地计算机的主机名名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - GetType获取当前实例的类型GetHostEntry将主机名或IP 地址解析为IPHostEntry 实例2)IPAddress类IPAddress类提供了对 IP 地址的转换、处理等功能。其Parse方法可将
4、 IP 地址字符串转换为 IPAddress实例。如:IPAddress ip = IPAddress.Parse( “192.168.1.1”); 3)IPEndPoint类IPEndPoint 类包含了应用程序连接到主机上的服务所需的IP 地址和端口信息。4)IPHostEntry 类IPHostEntry 类将一个域名系统(DNS) 主机名与一组别名和一组匹配的IP 地址关联。常用属性有: AddressList属性和 HostName属性。AddressList 属性 作用 :获 取或设 置与主 机关 联的 IP 地址 列表, 是一个IPAddress类型的数组,包含了指定主机的所有I
5、P 地址; HostName属性则包含了服务器的主机名。在 Dns 类中,有一个专门获取IPHostEntry 对象的方法,通过IPHostEntry对象,可以获取本地或远程主机的相关IP 地址。例子: 设计 WinForm 应用程序用于获取指定主机名的IP 地址。设计步骤如下:新建 WinForm 项目新建 WinForm 项目并命名为“ ParseDNS ” 。添加控件并设置属性在 Form1 的设计视图中将此窗体调整到适当的大小并将“Text”属性设置为“获取主机 IP 地址” 。从工具箱中拖曳1 个 Button、2 个 Label 和 2个 TextBox控件到窗体中,如图10.1
6、所示布局控件。将label1、label2 和 button1 的 Text属性值分别设置为“主机名” 、 “IP 地址: ”和“获取”。添加命名空间所要添加的命名空间为“ using System.Net; ” 。添加事件及代码名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - 双击“获取”按钮,其事件代码如下所示:private void button1_Click(object sender, EventArgs e) te
7、xtBox2.Text = ; try IPHostEntry hostInfo = Dns .GetHostEntry(textBox1.Text.Trim(); textBox2.Text = 主机名: + Dns .GetHostName() + rn; foreach ( IPAddress ipadd in hostInfo.AddressList) textBox2.Text += ipadd.ToString() + rn; catch ( Exception ex) MessageBox .Show(ex.Message.ToString(); 运行程序按“Ctrl+F5”组合
8、键运行程序, 分别输入“”和“” ,单击“获取”按钮,结果如图1 和图 2 所示。图 1 图 2 2.System.Net.Socket命名空间TCP/IP的 Socket则提供 3 种类型的套接字。该接口允许对较低层协议,如IP、ICMP 直接访问。常用于检验新的协议实现或访问现有服务中配置的新设备。套接字处理数据两种基本模式:同步套接字和异步套接字。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - 同步套接字其特点是在通过S
9、ocket 进行连接、接收、发送操作时,客户机或服务器在接收到对方响应前会处于阻塞状态。它适用于数据处理不太多的场合。异步套接字在通过 Socket 进行连接、接收、发送操作时,客户机或服务器不会处于阻塞方式,而是利用 callback机制进行连接、接收和发送处理,这样就可以在调用发送或接收的方法后直接返回,并继续执行下面的程序。IP 连接领域有两种通信类型:面向连接的 (connection-oriented) (TCP) 在面向连接的套接字中, 使用 TCP 协议来建立两个 IP 地址端点之间的会话。一旦建立了这种连接,就可以在设备之间可靠的传输数据。无连接的 (connectionles
10、s) (UDP) 为了建立面向连接的套接字,服务器和客户端必须分别进行编程。对于服务器端程序,建立的套接字必须绑定到用于TCP通信的本地 IP 地址和端口上。网络流流(stream)是对串行传输的数据的一种抽象表示,底层的设备可以是文件、外部设备、主存、网络套接字等。C#在 System.Net.Sockets 名称空间中提供了一个专门的NetworkStream 类,用于通过网络套接字发送和接收数据。NetworkStream类支持对网络数据的同步或异步访问,它可被视为在数据来源端和接收端之间架设了一个数据通道。1)Socket类.NET 框架的 System.NET.Sockets命名空间
11、为需要严密控制网络访问的开发人员提供了 WinSock 接口的托管实现。Socket类用于实现 Berkeley 套接字接口。Socket类的构造函数Socket类的构造函数原型如下:public Socket( AddressFamily addressFamily, SocketType socketType, ProtocolType protocolType 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - ); 构造函
12、数使用 3 个参数来定义创建的Socket实例。 AddressFamily用来指定网络类型; SocketType 用来指定套接字类型(即数据连接方式);ProtocolType用来指定网络协议。 3 个参数均是在命名空间System.Net.Sockets中定义的枚举类型。但它们并不能任意组合, 不当的组合反而会导致无效套接字。如对于常规的 IP 通信网络, AddressFamily 只能使用 AddressFamily.InterNetwork,此时可用的 SocketType 、ProtocolType组合如表 1 所示。SocketType 值ProtocolType 值描述Str
13、eamTcp面向连接套接字DgramUdp无连接套接字RawIcmp网际消息控制协议套接字RawRaw基础传输协议套接字表 1 2)TcpClient 类TcpClient类为 TCP 网络服务提供客户端连接,它构建于Socket类之上,以提供较高级别的TCP 服务,即提供了通过网络连接、发送和接收数据的简单方法。用于在同步阻止模式下通过网络来连接、发送和接收流数据 。另外,通过与NetworkStream对象的关联,使得用户可以通过流操作方式实现对网络连接状态下数据的发送和接收。通过 TcpClient 类实现与 TCP 主机的通信流程如图3 所示。名师资料总结 - - -精品资料欢迎下载
14、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - 图 3 TcpClient类与 TCP 主机的通信流程1创建 TcpClient 实例TcpClient类有 4 种构造函数的重载形式,分别对应4 种创建实例的方法。TcpClient( ),这种不带任何参数的构造函数将使用本机默认的IP 地址并将使用默认的通信端口号0。当然,如果本机不止一个IP 地址时将无法选择使用。TcpClient (AddressFamily) ,使用指定的地址族初始化TcpClient类的新实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C#网络通信 2022 C# 网络 通信
限制150内