网络编程技术教程课件

上传人:风*** 文档编号:247907222 上传时间:2024-10-21 格式:PPT 页数:49 大小:365.23KB
返回 下载 相关 举报
网络编程技术教程课件_第1页
第1页 / 共49页
网络编程技术教程课件_第2页
第2页 / 共49页
网络编程技术教程课件_第3页
第3页 / 共49页
点击查看更多>>
资源描述
单击此处编辑母版标题样式0n,单击此处编辑母版文本样式1n,第二级2n,第三级3,第四级4,第五级5,第6章 TCP/UDP编程,*,C#网络编程技术教程,第六章 TCP/UDP编程,C#网络编程技术教程第六章 TCP/UDP编程,学习目标,了解TCP和UDP。,掌握C#中面向TCP和UDP编程的主要类:TcpClient、TcpListener和UdpClient。,掌握TcpClient、TcpListener和UdpClient的编程方法。,了解多播的原理,掌握基于UdpClient的多播编程方法。,学习目标了解TCP和UDP。,本章内容,6.1 TCP/UDP概述,6.2 .NET中的TCP编程基础,6.3 基于TCP的编程实例,6.4 .NET中的UDP编程基础,6.5 多播编程,本章内容6.1 TCP/UDP概述,6.1 TCP/UDP概述,在TCP/IP协议族中,传输层主要包括TCP和UDP两种通信协议,它们以不同的方式实现两台主机中的不同应用程序之间的数据传输,即数据的端到端传输。由于它们的实现方式不同,因此各有一套属于自己的端口号,且相互独立。可以采用如下五元组来描述两个应用进程之间的通信关联。,(协议,信源机IP地址,信源应用进程端口,信宿机IP地址,信宿应用进程端口)即端到端之间的一条通信连接就可以表示为上述五元组,这也是进行网络程序设计最基本的概念。,其中,传输控制协议(Transmission Control Protocol,TCP)提供一种面向连接的、可靠的数据传输服务,保证了端到端数据传输的可靠性。也正因为这样,使TCP协议成为传输层最常用的协议,同时也是一个比较复杂的协议,其提供了传输层几乎所有的功能。因此和IP协议一样,成为了 TCP/IP协议族中最重要的协议之一。其主要特点如下:,(1)向应用进程提供面向连接的服务,两个需要通过TCP协议进行数据传输的应用进程之间首先必须建立一个TCP连接,并且在数据传输完成后要释放连接。一般将请求连接的应用进程称为客户进程,而响应连接请求的应用进程称为服务器进程,即TCP连接的建立采用的是一种客户机/服务器工作模型。,(2)提供全双工数据传输服务,只要建立了TCP连接,就能在两个应用进程间进行双向的数据传输服务,但是这种传输只是端到端的传输,不支持广播和多播。,6.1 TCP/UDP概述 在TCP/IP协,6.1 TCP/UDP概述,(3)提供面向字节流的服务,即TCP协议的数据传输是面向字节流的,两个建立了TCP连接的应用进程之间交换的是字节流。发送进程以字节流形式发送数据,接收进程也把数据作为字节流来接收。端到端之间不保留数据记录的边界,也就是说,在传输的层面上不存在数据记录的概念。,用户数据报协议(User Datagram Protocol,UDP)是传输层的两个主要协议之一,相对TCP协议来说,UDP是一种非常简单的协议,在网络层的基础上实现了应用进程之间端到端的通信。与TCP协议不同,UDP协议是一种无连接的协议,数据在传输之前通信双方不需要建立连接。信宿在收到UDP数据报之后也不需要给出任何应答报文。发送方发出的每一个UDP用户数据报都是独立的,都携带了完整的目的地址。每个数据报都可以被网络系统独立路由。因此从同一个信源发往同一个信宿的多个UDP报文可能选择不同的路径达到信宿,它们达到的先后顺序也可能不同于发送顺序。所以,UDP协议提供的是一种无连接的、不可靠的数据传输方式,在数据传输过程中没有流量控制和确认机制,数据报可能会丢失、延迟、乱序到达信宿。UDP协议只是提供了利用校验和检查数据完整性的简单差错控制,属于一种尽力而为的数据传输方式。,虽然UDP用户数据报只提供不可靠的传输方式,但它具有其自身的一些特点:,(1)UDP是一个无连接协议,传输数据之前信源和信宿不需要建立连接,因此不存在连接建立的时延。在信源端,UDP传送数据的速度仅仅受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在信宿端,UDP把每个数据报放在队列中,应用程序每次从队列中读一个数据报。,6.1 TCP/UDP概述(3)提供面向字节流的服务,即,6.1 TCP/UDP概述,(2)由于传输数据不需要建立连接,也就不需要维护连接状态,包括收发状态等,这样一台服务机可同时向多个客户机传输相同的数据,例如实现多播。,(3)UDP数据报的首部很短,只有8字节,相对于TCP的20字节首部的开销要小很多。,(4)吞吐量不受流量控制算法的调节,只受应用软件生成数据的速率、传输带宽、信源和信宿主机性能的限制。,由于UDP具有这些特点,有许多应用更适合使用UDP协议,如:,(1)只需要简单数据交换的应用,例如DNS服务,它不需要复杂的可靠性保证机制,这样,利用UDP来传输数据既可以节省系统开销又提高了网络的传输效率。,(2)不需要关心数据的差错控制和流量控制的应用。,(3)实时性要求较高但可承受一定的数据错误的应用,例如实时语音传输、实时视频通信等。,(4)实现一对多数据发送的应用,例如广播和组播。,6.1 TCP/UDP概述(2)由于传输数据不需要建立连,6.2.NET中的TCP编程基础,6.2.1 TcpClient类,TcpClient类为TCP网络服务提供客户端连接,它构建于Socket类之上,以提供较高级别的TCP服务,即提供了通过网络连接、发送和接收数据的简单方法。用于在同步阻止模式下通过网络来连接、发送和接收流数据。另外,通过与NetworkStream对象的关联,使得用户可以通过流操作方式实现对网络连接状态下数据的发送和接收。TcpClient类的常见属性和方法分别见下表。,属 性,描 述,Available,获取网络接收缓冲区中可供读取的数据量,Client,获取或设置基础Socket,Connected,标识TcpClient的基础Socket是否已连接到远程主机,NoDelay,指定在发送或接收缓冲区未满时,套接字是否将延迟发送或接收数据,ReceiveBufferSize,获取或设置接收缓冲区的大小,ReceiveTimeout,获取或设置在初始化一个读取操作以后 TcpClient 等待接收数据的时间量,SendBufferSize,获取或设置发送缓冲区的大小,SendTimeout,获取或设置 TcpClient 等待发送操作成功完成的时间量,6.2.NET中的TCP编程基础 6.2.1 TcpC,6.2.NET中的TCP编程基础,6.2.1 TcpClient类,TcpClient,构 造 函 数,BeginConnect,开始一个对远程主机连接的异步请求,Close,释放TcpClient,实例,而不关闭基础连接,Connect,依据指定的主机名和端口号连接到TCP主机,EndConnect,异步接受传入的连接尝试,GetStream,返回用于发送和接收数据的NetworkStream实例,6.2.NET中的TCP编程基础 6.2.1 TcpC,6.2.NET中的TCP编程基础,6.2.1 TcpClient类,通过TcpClient类实现与TCP主机的通信流程如图所示。,1创建TcpClient实例,TcpClient类有4种构造函数的重载形式,分别对应4种创建实例的方法。,(1)TcpClient(),这种不带任何参数的构造函数将使用本机默认的IP地址并将使用默认的通信端口号0。当然,如果本机不止一个IP地址时将无法选择使用。,(2)TcpClient(AddressFamily),使用指定的地址族初始化TcpClient类的新实例。,(3)TcpClient(IPEndPoint),即使用本机IPEndPoint创建TcpClient的实例。其中IPEndPoint将网络端点表示为IP地址和端口号,用于指定在建立远程主机连接时所使用的本地网络接口IP地址和端口号。,(4)TcpClient(String,Int32),初始化 TcpClient 类的新实例并连接到指定主机上的指定端口。,因此,在TcpClient的构造函数中,如果没有指定远程主机名和端口号,它只是用来实例化TcpClient,同时实现与本地IP地址和Port端口的绑定。,6.2.NET中的TCP编程基础 6.2.1 TcpC,6.2.NET中的TCP编程基础,6.2.1 TcpClient类,2与远程主机建立连接,如果在TcpClient的实例化过程中没有实现与远程主机的连接,则可以通过Connect方法来实现与指定远程主机的连接。Connect方法使用指定的主机名和端口号将客户端连接到远程主机,其使用方法如下。,(1)Connect(IPEndPoint),使用指定的远程网络终结点将客户端连接到远程TCP主机。,(2)Connect(IPAddress),使用指定的IP地址和端口号将客户端连接到远程TCP主机。,(3)Connect(IPAddress,Int32),使用指定的IP地址和端口号将客户端连接到远程TCP主机。,(4)Connect(String,Int32),使用指定的主机名和端口号将客户端连接到指定主机上的指定端口。,如下代码段描述了TcpClient实例的创建以及与指定远程主机的连接过程。,m_client=new TcpClient();,m_client.Connect(m_servername,m_port);,6.2.NET中的TCP编程基础 6.2.1 TcpC,6.2.NET中的TCP编程基础,6.2.1 TcpClient类,3利用NetworkStream实例发送和接收数据,TcpClient类创建在Socket之上,提供了更高层次的TCP服务抽象,特别是在网络数据的发送和接收方面,TcpClient使用标准的Stream流处理技术,通过使用NetworkStream实例的读写操作来实现网络数据的接收和发送,因此更加方便直观。但NetworkStream与普通流Stream有所不同,NetworkStream没有当前位置的概念,不支持查找和对数据流的随机访问。,该方法首先通过TcpClient.GetStream来返回NetworkStream实例,进而利用所获取的NetworkStream实例的读写方法Write和Read来发送和接收数据,其实现代码如下所示。,rs=new StreamReader(m_client.GetStream();/获取接收数据的网络流实例,ws=m_client.GetStream();/获取发送数据的网络流实例,m_returnData=rs.ReadLine();/接收网络数据,Console.WriteLine(m_returnData);,ws.Write(data,0,data.Length);/向网络发送数据,4关闭TCP套接字,在与服务器完成通信后,应该调用Close()方法释放所有的资源。,m_client.Close();,6.2.NET中的TCP编程基础 6.2.1 TcpC,6.2.NET中的TCP编程基础,6.2.2 TcpListener类,TcpClient类实现了客户端编程抽象,因此构建客户端网络应用程序便可以直接使用TcpClient取代Socket,更加方便易用。同样,对于服务器端应用程序的构建,C#提供了TcpListener类。该类也是构建于Socket之上,提供了更高抽象级别的TCP服务,使得程序员能更方便地编写服务器端应用程序。TcpListener类的常见属性和方法分别如表6.3、表6.4所示。,名 称,描 述,ExclusiveAddressUse,获取或设置一个布尔值,以指定当前TcpListener是否只允许一个基础套接字来侦听特定端口,LocalEndpoint,获取当前TcpListener的基础IPEndPoint实例,此对象包含关于本地网络接口的IP地址和端口号信息,Active,指明TcpListener是否正在侦听连接请求(受保护
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!