资源预览内容
第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
第9页 / 共31页
第10页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
网络协议编程课程设计 长沙理工大学计算机与通信工程学院网络协议编程课程设计报告 院 系 计算机与通信工程学院 专 业 网络工程 班 级 网络1101班 学 号 201158080110 学生姓名 赵思雨 指导教师 谢晓巍 课程成绩 完成日期 2014年9月24日 课程设计成绩评定院 系 计算机与通信工程 专 业 网络工程 班 级 网络1101班 学 号 201158080110 学生姓名 赵思雨 指导教师 谢晓巍 指导教师对学生在课程设计中的评价评分项目优良中及格不及格学习态度与遵守纪律情况课程设计完成情况课程设计报告的质量指导教师成绩 指导教师签字 年 月 日课程设计答辩组对学生在课程设计中的评价评分项目优良中及格不及格课程设计完成情况课程设计报告的质量课程设计答辩答辩组成绩 答辩组长签字 年 月 日课程设计综合成绩 注:课程设计综合成绩指导教师成绩60%答辩组成绩40%课程设计任务书 计算机与通信工程 学院 网络工程 专业课程名称网络协议编程课程设计时间2014年9月15日9月28日学生姓名赵思雨指导老师谢晓巍题 目基于UDP网络通信系统的服务端程序设计主要内容: (1)理解UDP协议的基本功能和工作原理。(2)培养运用理论知识解决实际问题的能力。(3)理解UDP协议在Java编程语言中的具体体现。(4)运用所学的知识,学会分析程序,并从实际上实现即时通讯的要求。要求:(1)实现的是服务器和客户端的通讯。(2)学会文献检索的基本方法和综合运用文献的能力。(3)通过课程设计培养严谨的科学态度,认真的工作作风和团队协作精神应当提交的文件:(1)课程设计报告。(2)课程设计附件(源程序、各类图纸、实验数据、仿真截图等实证材料)。基于UDP网络通信系统的服务端程序设计学生姓名:赵思雨 指导老师:谢晓巍 摘 要 随着网络技术的发展及人们生活的需求,网络聊天已越来越受到人们的青睐 。网络聊天已经成为人们工作生活中传递信息、交流感情的重要工具,给人们带来了很大的方便。 本课题是开发一个基于UDP的局域网聊天系统,运用软件工程的设计流程,综合运用数据库编程技术、Windows程序设计技术、网络通讯技术,此网络聊天工具采用客户端/服务器(C/S)模式,客户端采用UDP与服务器连接,客户端与客户端之间通过UDP互相通讯。服务器端具有服务器端口设置,此聊天工具能实现多人聊天功能,适用于局域网使用的网络聊天工具,其操作简单,灵活性好,运行也比较稳定。关键词 网络通讯;客户端/服务器模型;用户数据报协议;套接字1 引 言自进入信息化社会以来,人们的生活发生了翻天覆地的变化,所有这一切的实现都要归功于计算机网络。自从计算机网络出现以来,网络发展越来越迅速,其重要性更是不可估量。现在,网络已经进入到我们生活的各个角落,大到网上理财、网上会议、网上战争,小到上网购物、查找资料,网上聊天等,可以说网络把我们的世界变“小”了,即使在天涯海角,我们也可以随时联系。一个最简单且应用最广泛的例子网上聊天,就是最好的证明。本课程设计将基于UDP协议和局域网环境,使用Java语言实现一个即时网络通讯程序。1.1背景介绍随着计算机网络信息技术的日益发展和成熟,人们的生活因为网络而变得更多姿多彩,基于网络的通讯技术也如同雨后春笋般涌现到网络世界中。TCP协议和UDP协议是网络通讯的基本协议。而对于普通的信息交流,UDP协议则因为更方便简单,所以常常采用UDP协议开发这类即时通讯程序。(1)理解UDP协议的基本功能和工作原理。(2)培养运用理论知识解决实际问题的能力。(3)理解UDP协议在Java编程语言中的具体体现。(4)运用所学的知识,学会分析程序,并从实际上实现即时通讯的要求。1.2课程设计的目的1.3课程设计的基本任务本次课程设计是基于UDP协议的通讯程序,所以其基本任务就是要实现的是服务器和客户端的通讯,即服务器对端口进行监听,客户端发送数据给服务器,服务器接收。实现了这个过程,就达到了本次课程设计的目的。2 设计原理2.1 UDP协议原理UDP协议的全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。 UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。 与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。 UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。 UDP是无连接的,即发送数据之前不需要建立连接(当然发送数据结束时也没有连接可释放)因此减少了开销和发送数据之前的时延。 UDP使用的是尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。UDP是面向报文的。发送方的UDP对应程序交下来的报文,在添加首部后就向下交付给IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP是定义用来在互连网络环境中提供数据报交换的计算机通信的协议。此协议默认是IP下层协议。此协议提供了向另一用户程序发送信息的最简便的协议机制,不需要连接确认和保护复制,所以在软件实现上比较简单,需要的内存空间比起TCP相对较小。UDP包头由4个域组成,其中每个域各占用2个字节。 (1)源端口号(16位):UDP数据包的发送方使用的端口号。 (2)目标端口号(16位):UDP数据包的接收方使用的端口号。UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和rap协议正是采用这一机制,实现对同一时刻内多项应用同时发送和接收数据的支持。 (3)数据报长度(16位)。数据报的长度是指包括报头和数据部分在内的总的字节数。理论上,包含报头在内的数据包的最大长度为65535字节。不过,一些实际应用往往会限制数据包的大小,有时会降低到8192字节。(4)校验值(16位)。UDP协议使用包头中的校验值来保证数据的安全。2.2客户端/服务器模式客户机一方,UDP应用程序功能如下:(1) 打开通信信道(申请一套接字),并连接到服务器在主机的保留端口,该端口对应服务器的UDP进程。(2) 向服务器发出请求报文,等待接收应答。(3) 从服务器方收到最终应答结果,或在不再请求时关闭信道并终止客户机进程。服务器一方,UDP应用程序动作如下:(1) 打开通信信道(申请一套接字),通知本地主机在某一保留端口接收客户机请求。(2) 等待客户请求到达指定端口。(3) 接收到请求,启动一新进程处理用户请求,同时释放旧进程以响应新的客户请求,一旦服务完成,关闭新进程与客户的通信链路。(4) 继续等待客户机请求。(5) 如果不想响应客户机请求,关闭服务器进程3.设计步骤此次设计是编写一个基于UDP的即时通讯程序,要求双方能够进行即时通讯,实现聊天和传输文件的功能。本课程设计主要负责的是通讯程序客户端的设计。其具体设计如下。3.1 聊天模块设计流程图服务器端设计程序得出当前服务器的地址客户端输入所要连接的服务器地址地址是否相同输入客户端发送的信息设置服务器端端口号为80接收客户端发送的消息,发出服务器消息设置客户端端口号为80接收服务器发送到消息,发出客户端消息接受客户端发送的消息,发出服务器消息消息内容是否为NULL结束通讯 即时通讯程序客户端/服务器端聊天模块设计流程图如图所示。 图1-1 聊天模块流程图3.2详细设计根据UDP协议的基本特性以及Java语言编程特点,然后对比设计流程图,在Eclipse编程环境下编写出实现该即时聊天系统的程序,具体步骤如下:1.打开Eclise创建一个Java工程,命名为UDPChat。2.在Java工程目录下创建一个package,命名为UDPChat。3.在此package目录下创建一个类,类名为Client,创建完之后弹出一个编辑窗口,在此编辑环境下编写客户端程序,其聊天模块服务器端核心程序如下:public class Server public static void main(String args) new UDPServer().start(); /启动服务器 class UDPServer extends Thread public UDPServer() /缺省构造函数 public void run() try DatagramSocket socket = new DatagramSocket(80); /建立一个Socket连接,端口号为80 System.out.println(服务器IP地址为: + InetAddress.getLocalHost().getHostAddress(); /得到服务器地址,并打印出来 /实现客户端和服务器端的连续通信 while (true) / 接收 byte instr = new byte200; /定义数组,用来保存客户端发送来的数据 DatagramPacket receive = n
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号