TCP和UDP数据包发送程序的设计和实现C#设计.doc
《TCP和UDP数据包发送程序的设计和实现C#设计.doc》由会员分享,可在线阅读,更多相关《TCP和UDP数据包发送程序的设计和实现C#设计.doc(37页珍藏版)》请在沃文网上搜索。
1、TCP和UDP数据包发送程序的设计和实现学生:周瑞杰 指导老师:王静摘要: 在TCP/IP协议族中,传输层主要包括TCP和UDP两种通信协议,它们以不同的方式实现两台主机中的不同程序间之间的数据传输,即数据的端到端传输。TCP提供一种面向连接的、可靠的数据传输服务,保证了端到端数据传输的可靠性;而UDP提供一种无连接的、不可靠的数据传输方式,但保证了数据传输的实时性。本课程设计用C#语言分别编写了基于TCP的C/S聊天程序和基于UDP的C/S聊天程序。经测试,本文程序基本实现了聊天功能,即实现了TCP和UDP数据包发送程序的设计。关键词:TCP、UDP、C#、C/S聊天程序、数据包发送程序De
2、sign and Realization of the Sending Program of TCP and UDP Packets Student:Zhou Ruijie Instructor:WangJingAbstract: In the TCP / IP protocol clan, the transport layer mainly includes two communication protocols TCP and UDP, which had achieved the data transmission among different programs between tw
3、o hosts in different ways, namely the end-to-end data transmission. TCP provides a connection-oriented, reliable data transmission service, ensuring the reliability of the end-to-end data transmission; While UDP provides a connectionless, unreliable way of data transmission, but guaranteeing the dat
4、a transmission in real-time. This course design has separately written TCP-based C/S chat program and UDP-based C/S chat program in C#. By test, this paper program has basically achieved chat function, namely realized the design of the sending program of TCP and UDP packets.朗读显示Keywords:TCP、UDP、C#、C
5、/S chat program、sending program of packets目录1引言11.1课程设计的目的11.2本设计任务和主要内容12开发工具及相关技术22.1 C#简介22.2 TCP和UDP概述22.3 C/S模式43 基于TCP的C/S聊天程序的详细设计63.1 TCP设计思路63.2 客户端编程步骤83.3 服务器端编程步骤94 基于UDP的C/S聊天程序的详细设计114.1 UDP设计思路114.2 客户端编程步骤124.3 服务器端编程步骤135 结果分析145.1 TCP聊天程序运行结果145.2 UDP聊天程序运行结果175.3 结果分析176 结束语187 参考
6、文献19附录1:TCP源程序清单20附录2:UDP源程序清单33周瑞杰 TCP和UDP数据包发送程序的设计和实现 第 35页 共35页1引言自进入信息化社会以来,人们的生活发生了翻天覆地的变化,所有这一切的实现都要归功于计算机网络。自从计算机网络出现以来,网络发展越来越迅速,其重要性更是不可估量。现在,网络已经进入到我们生活的各个角落,大到网上理财、网上会议、网上战争,小到上网购物、查找资料,网上聊天等,可以说网络把我们的世界变“小”了,即使在天涯海角,我们也可以随时联系。一个最简单且应用最广泛的例子网上聊天,就是最好的证明。本课程设计将基于TCP和UDP协议,使用C#语言分别实现一个C/S聊
7、天程序。1.1课程设计的目的本次课程设计是用C#分别编写基于TCP和UDP协议的C/S聊天程序,所以其基本任务就是要实现客户端和服务器端的通信,即客户端和服务器对端能够互相发送数据和接收数据。其中TCP是面向连接的协议,所以在客户端和服务器端在通信之前必须先由服务器端监听,客户端发送连接请求,成功建立连接后才能进行通信,这个机制保证了数据传输的可靠性。实现了这个过程,就达到了本次课程设计TCP和UDP数据包发送程序的设计和实现的目的。1.2本设计任务和主要内容(1)掌握TCP和UDP的概念和工作原理;(2)熟练掌握C#语言的编程原理;(3)实现基于TCP协议的聊天程序设计;(4)实现基于UDP
8、协议的聊天程序设计;(5)运行程序,并合理分析实验结果。 2开发工具及相关技术2.1 C#简介C#(C Sharp)是微软(Microsoft)为.NET Framework量身订做的程序语言,C#拥有C/C+的强大功能以及Visual Basic简易使用的特性,是第一个组件导向(Component-oriented)的程序语言,和C+与Java一样亦为对象导向(object-oriented)程序语言。C#具有以下特点:(1)语法简洁。(2)面向对象设计。(3)与Web紧密结合。(4)完整的安全性和错误处理。(5)版本控制。(6)兼容性。(7)灵活性。2.2 TCP和UDP概述在TCP/IP
9、协议族中,传输层主要包括TCP和UDP两种通信协议,它们以不同的方式实现两台主机中的不同应用程序之间的数据传输,即数据的端到端传输。由于它们的实现方式不同,因此各有一套属于自己的端口号,且相互独立。可以采用如下五元组来描述两个应用进程之间的通信关联。(协议,信源机IP地址,信源应用进程端口,信宿机IP地址,信宿应用进程端口)即端到端之间的一条通信连接就可以表示为上述五元组,这也是进行网络程序设计最基本的概念。 其中,传输控制协议(Transmission Control Protocol,TCP)提供一种面向连接的、可靠的数据传输服务,保证了端到端数据传输的可靠性。也正因为这样,使TCP协议成
10、为传输层最常用的协议,同时也是一个比较复杂的协议,其提供了传输层几乎所有的功能。因此和IP协议一样,成为了TCP/IP协议族中最重要的协议之一。其主要特点如下:(1)向应用进程提供面向连接的服务,两个需要通过TCP协议进行数据传输的应用进程之间首先必须建立一个TCP连接,并且在数据传输完成后要释放连接。一般将请求连接的应用进程称为客户进程,而响应连接请求的应用进程称为服务器进程,即TCP连接的建立采用的是一种客户机/服务器工作模型。(2)提供全双工数据传输服务,只要建立了TCP连接,就能在两个应用进程间进行双向的数据传输服务,但是这种传输只是端到端的传输,不支持广播和多播。 (3)提供面向字节
11、流的服务,即TCP协议的数据传输是面向字节流的,两个建立了TCP连接的应用进程之间交换的是字节流。发送进程以字节流形式发送数据,接收进程也把数据作为字节流来接收。端到端之间不保留数据记录的边界,也就是说,在传输的层面上不存在数据记录的概念。 用户数据报协议(User Datagram Protocol,UDP)是传输层的两个主要协议之一,相对TCP协议来说,UDP是一种非常简单的协议,在网络层的基础上实现了应用进程之间端到端的通信。与TCP协议不同,UDP协议是一种无连接的协议,数据在传输之前通信双方不需要建立连接。信宿在收到UDP数据报之后也不需要给出任何应答报文。发送方发出的每一个UDP用
12、户数据报都是独立的,都携带了完整的目的地址。每个数据报都可以被网络系统独立路由。因此从同一个信源发往同一个信宿的多个UDP报文可能选择不同的路径达到信宿,它们达到的先后顺序也可能不同于发送顺序。所以,UDP协议提供的是一种无连接的、不可靠的数据传输方式,在数据传输过程中没有流量控制和确认机制,数据报可能会丢失、延迟、乱序到达信宿。UDP协议只是提供了利用校验和检查数据完整性的简单差错控制,属于一种尽力而为的数据传输方式。 虽然UDP用户数据报提供不可靠的传输方式,但它具有其自身的一些特点:(1)UDP是一个无连接协议,传输数据之前信源和信宿不需要建立连接,因此不存在连接建立的时延。在信源端,U
13、DP传送数据的速度仅仅受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在信宿端,UDP把每个数据报放在队列中,应用程序每次从队列中读一个数据报。 (2)由于传输数据不需要建立连接,也就不需要维护连接状态,包括收发状态等,这样一台服务机可同时向多个客户机传输相同的数据,例如实现多播。 (3)UDP数据报的首部很短,只有8字节,相对于TCP的20字节首部的开销要小很多。(4)吞吐量不受流量控制算法的调节,只受应用软件生成数据的速率、传输带宽、信源和信宿主机性能的限制。 由于UDP具有这些特点,有许多应用更适合使用UDP协议,如:(1)只需要简单数据交换的应用,例如DNS服务,它不需要复杂的
14、可靠性保证机制,这样,利用UDP来传输数据既可以节省系统开销又提高了网络的传输效率。 (2)不需要关心数据的差错控制和流量控制的应用。(3)实时性要求较高但可承受一定的数据错误的应用,例如实时语音传输、实时视频通信等。 (4)实现一对多数据发送的应用,例如广播和组播。2.3 C/S模式在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器网,Client/Server。在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。 它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分
15、配到 Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。C/S工作过程如下:服务器端描述:S端启动服务进程,并监听相应端口。然后,若收到C端发出的有关请求,按如下情况给出相应的反映:将收到的包进行检测,若收到的包有错则抛弃(discard)
16、,并发给C端一个negtive ACK。若收到的包正常,则将此包进行解包,将内容输出至一临时文件;并发给C端一个positive ACK。依次收到来自C端的包,直到收到end为止,并关闭此进程,转回监听状态。客户端描述为:若收到的为Positive ACK,则继续发包;若收到的为Negtive ACK,则将应发的包重发。直到C端将所有要发的包都发完,并都已经收到S端的回应,最后发一个End包,直接关闭此进程。综上所述,应用中的服务器程序必须先于客户机进程启动,直到对客户机的响应结束或强迫终止。3 基于TCP的C/S聊天程序的详细设计3.1 TCP设计思路为了简化编程,.NET提供面向TCP编程
17、的相关类,主要包括TcpClient和TcpListener。TcpClient类为TCP网络服务提供客户端连接,它构建于Socket类之上,以提供较高级别的TCP服务,即提供了通过网络连接、发送和接收数据的简单方法。用于在同步阻止模式下通过网络来连接、发送和接收流数据。另外,通过与NetworkStream对象的关联,使得用户可以通过流操作方式实现对网络连接状态下数据的发送和接收。通过TcpClient类实现与TCP主机的通信流程如下图所示: 图3-1 TcpClient类通信流程图TcpClient类实现了客户端编程抽象,因此构建客户端网络应用程序便可以直接使用TcpClient取代Soc
18、ket,更加方便易用。同样,对于服务器端应用程序的构建,C#提供了TcpListener类。该类也是构建于Socket之上,提供了更高抽象级别的TCP服务,使得程序员能更方便地编写服务器端应用程序。通常情况下,服务器端应用程序在启动时将首先绑定本地网络接口的IP地址和端口号,然后进入侦听客户请求的状态,以便于客户端应用程序提出显式请求。一旦侦听到有客户端应用程序请求连接侦听端口,服务器端应用将接受请求,并建立一个负责与客户端应用程序通信的信道,即通过创建连接套接字与客户端应用程序建立连接,由连接套接字完成与客户端应用程序的数据传送操作,服务器端应用程序继续侦听更多的客户端连接请求。TcpLis
19、tener通过实例创建过程完成与本地网络接口的绑定,并由所创建的实例调用Start方法启动侦听;当侦听到客户端应用程序的连接请求后,根据客户端应用程序的不同请求方式,可以通过AcceptTcpClient方法接受传入的连接请求并创建TcpClient实例以处理请求,或者通过AcceptSocket方法接受传入的连接请求并创建Socket实例以处理请求,并由所创建的TcpClient实例或Socket实例完成与客户端应用程序的网络数据传输。最后,需要使用Stop关闭用于侦听传入连接的Socket,同时也必须关闭从AcceptSocket或AcceptTcpClient返回的任何实例,以释放相关资
20、源。其实现流程如下图所示: 图3-2 TcpListener 类通信流程图3.2 客户端编程步骤(1)新建一个客户端窗口程序:FormClient(2)对窗口程序进行界面设计,由于功能比较简单,并没有做做到尽善尽美,只是做到简单的通信与显示信息,主要用到了三个主要空间:LlistBoxStatus,TextBox,Button,其中,LlistBoxStatus用来显示与服务器端的连接状态,两个TextBox分别表示接收的信息和准备发送的信息,两个Button分别用来表示连接和发送。将各控件的名字改为有实际意义,容易标记的名字。(3)核心代码编写进入编写代码模式,在开头中添加所要用到的命名空间
21、如:using System.Net; /提供一个统一、简单的编程接口using System.Net.Sockets;/提供Windows套接字接口的托管实现using System.Threading;/提供类和接口支持线程程序设计所需实现功能如下代码描述了TcpClient实例的创建以及与指定远程主机的连接过程。client = new TcpClient(AddressFamily.InterNetwork);/创建实例client.BeginConnect(serverIP0, 51888, requestCallback, client);listBoxStatus.Invoke(
22、setListBoxCallback, string.Format(本机EndPoint:0,client.Client.LocalEndPoint);listBoxStatus.Invoke(setListBoxCallback, 开始与服务器建立连接);与远程主机连接成功后,利用NetworkStream实例发送和接收数据。该方法首先通过client.GetStream来返回NetWorkStream实例,进而利用所获取的NetworkStream实例的读写方法Write和Read来发送和接收数据,其实现代码如下所示:try /获取连接成功后得到的状态参数 client = (TcpCli
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TCP UDP 数据包 发送 程序 设计 实现 C#