版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上枣 庄 学 院信息科学与工程学院课程设计任务书 题 目: 基于UDP的聊天系统 小组成员: 谭德鹏、崔浩、王珂、李洪康 成员学号: 1、2 4、9 专业班级: 网络工程、2012级本2班 课 程: Java网络编程 指导教师: 吕加国 职称: 副教授 完成时间: 2015年 4 月-2015年 6 月枣庄学院信息科学与工程学院制2015年4 月15日课程设计任务书及成绩评定课程设计的任务和具体要求任务:运用JDK和Eclipse开发环境,完成一个聊天或通讯系统的设计,初步掌握利用Java语言和JDK开发网络通信程序的基本方法。具体要求:1、需求分析:根据自己的选题,绘
2、制用例图、功能结构图等。2、系统设计:合理划分系统的功能结构,写清楚各个功能模块之间的关系。3、详细设计:根据自己选题的业务逻辑,完成系统的界面设计、代码设计。4、设计小结:总结课程设计的过程、体会及建议。6、其他:参考文献等。指导教师签字: 吕加国 日期: 2015-11-10 指导教师评语成绩:_ 指导教师签字: 日期: 2015-1-10课程设计所需软件、硬件等n 硬件环境:Iterl(R) Core(TM)2 Duo CPU,主频2.31GHz;内存3G; 硬盘320G以上;1024×768显示分辨率n 软件环境: JDK XXX、Eclipse XXX 课程设计进度计划起至
3、日期工作内容备注6月10日6月20日我们小组根据所选的题目以及在这学期所学的软件工程的知识,严格按照软件生产的流程(使用的是瀑布模型)来完成此作品,小组成员各职其所,都完成了预期所做的工作!参考文献、资料索引序号文献、资料名称编著者出版单位1Java网络编程基础(第2版).作者:朱喜福 戴舒樽 王晓勇专心-专注-专业目录摘要 随着网络技术的发展及人们生活的需求,网络聊天已越来越受到人们的青睐。网络聊天已经成为人们工作生活中传递信息、交流感情的重要工具,给人们带来了很大的方便。 本课题是开发一个基于UDP的局域网聊天系统,运用软件工程的设计流程,综合运用数据库编程技术、Windows程
4、序设计技术、网络通讯技术,此网络聊天工具采用客户端/服务器(C/S)模式,客户端采用UDP与服务器连接,客户端与客户端之间通过UDP互相通讯。服务器端具有服务器端口设置,此聊天工具能实现多人聊天功能,适用于局域网使用的网络聊天工具,其操作简单,灵活性好,运行也比较稳定。一、需求分析1.1 课程设计目的 通过设计网络协议及应用程序来加深理解网络各层的功能和机理,特别是对网络层、运输层、应用层的理解。 独立编写基于UDP的网络应用程序,独立上机调试程序,掌握基于UDP的网络应用基本技术。 培养独立思考问题、分析问题的能力和规范化工程设计的能
5、力。综合运用所学的知识去解决实践中的应用问题,掌握实验技能。为以后的毕业设计与实际工作打下基础。 1.2 课程设计的内容 用户数据报UDP是一个无连接协议使用这种协议时并不需要在两台计算机之间建立固定的连接也就是说通信双方没有服务器和客户机之分它们之间进行的是对等通信所以它的优势很明显是现代通信不可或缺的一部分。所以利用它的优势设计一个可以聊天的软件实现两台计算机间的即时通讯。二 . 概要设计2.1 UDP协议的理解 2.1.1UDP协议定义用户数据报协议,主要用来支持那些需要在计算机之间传输数据
6、的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。UDP协议直接位于IP(网际协议)协议的顶层。UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。UDP协议使用端口号为不同的应用保留其各自的数据传输通道。正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。数据发送
7、一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。数据报的长度是指包括报头和数据部分在内的总的字节数。因为报头的长度是固定的,所以该域主要被用来计算可变长度的数据部分(又称为数据负载)。数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的
8、大小,有时会降低到8192字节。UDP协议使用报头中的校验值来保证数据的安全。校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示,由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。 2.1.2UDP协议特点
9、; 1、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。UDP不对收到的数据进行排序,在UDP报文的首部中并没有关于数据顺序的2、UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。3、UDP不对收到的数据进行排序,在UDP报文的首部中并没有关于数据顺序的信息(如TCP所采用的序号),而且报文不一定按顺序到达的,所以接收端无从排起。 4、UDP对接收到的数据报不发送确认信号,发送端不知道数据是否被正确接收,也不会重发数据。&
10、#160; 5、UDP传送数据较TCP快速,系统开销也少。 6、由于缺乏拥塞控制(congestion control),需要基于网络的机制来减小因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送者不能够检测拥塞,所以像使用包队列和丢弃技术的路由器这样的网络基本设备往往就成为降低UDP过大通信量的有效工具。数据报拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制来减小这个潜在的问题。 从以上特点可知,UDP提供的是无连接的、不可靠的数据传送方式,是一种尽力而为的数
11、据交付服务。2.1.3基于C/S的多客服端相互通信原理分析: 在C/S模式中,它是在分散式 ,集中式,以及分布式基础上发展起来的一种新模型,目前大多数网络通信以及应用都属于这种模型,C/S模式将一个网络事务分为两部分,一部分是客户端(Client),他为用户提供网络请求服务的接口,另一部分是服务端(Server),它负责接受用户对服务的请求,并将这些服务透明的提供给用户,既适用于实际应用的程序,又实用于真正的计算装置,举例来说,我们到饭店吃饭时,要首先提出请求吃什么,属于客户端,饭店服务员根据请求提供相应的服务,属于服务端,至于相应的饭菜是由哪一个厨师来做,则由饭店的服务员
12、去联系,而客户端只需要和服务器打交道就行了,从程序实现上来说,客户端和服务器打交道实际上是两个进程打交道,服务端启动server进程,并等待客户端与其联系,而客户端则启动客户进程和服务器打交道。当服务器进程处理完一个客服进程请求的信息之后,由接着等待其他客户的请求。2.2 原理概述 采用UDP协议,通过服务器中转方式。因此,现在的IP侦探在你仅仅跟对方发送聊天消息的时候是无法获取到IP的。UDP 协议是不可靠协议,它只管发送,不管对方是否收到。但它的传输很高效,因为UDP协议排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。例如,腾
13、讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。如此来保证消息可以无遗漏传输。2.3 界面设计 在Frame布局容器中,添加一个显示聊天的文本框,在加入Panel面板,Panel面板中包括文本编辑框。三、详细设计3.1 聊天界面的设计 public UDPChat() mainJframe = new JFrame("聊天UDP协议"); con=mainJframe.getContentPane(); showArea= new JTextArea(); showArea.setEditable(fal
14、se); showArea.setLineWrap(true); lal1=new JLabel("接收端口"); lal2=new JLabel("发送端口"); lal3=new JLabel("对方的地址"); sendPortText=new JTextField(); sendPortText.setColumns(5); receivePortText= new JTextField(); receivePortText.setColumns(5); IPAddressText=new JTextField(); IPAd
15、dressText.setColumns(8); starBtn=new JButton("开始"); starBtn.addActionListener(this); pane1=new JPanel(); pane1.setLayout(new FlowLayout(); pane1.add(lal1); pane1.add(receivePortText); pane1.add(lal2); pane1.add(sendPortText); pane1.add(lal3); pane1.add(IPAddressText); pane1.add(starBtn); J
16、SPane = new JScrollPane(showArea); msgText=new JTextField(); msgText.setColumns(40); msgText.setEditable(false); msgText.addActionListener(this); pane2=new JPanel(); pane2.setLayout(new FlowLayout(); pane2.add(msgText); sendBtn=new JButton(); pane2.add(sendBtn); con.add(pane1,BorderLayout.NORTH); co
17、n.add(JSPane,BorderLayout.CENTER); con.add(pane2,BorderLayout.SOUTH); mainJframe.setSize(600,400); mainJframe.setVisible(true); mainJframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);3.2 响应发送按钮 public void actionPerformed(ActionEvent e) try if(e.getSource() = starBtn) inBuf=new byteBUFSIZE; sendP
18、ort = Integer.parseInt(sendPortText.getText(); sendIP=InetAddress.getByName(IPAddressText.getText(); sendSocket=new DatagramSocket(); receivePort=Integer.parseInt(receivePortText.getText(); receivePack=new DatagramPacket(inBuf,BUFSIZE); receiveSocket=new DatagramSocket(receivePort); thread = new Thr
19、ead(this); thread.setPriority(Thread.MIN_PRIORITY); thread.start(); starBtn.setEnabled(false); sendBtn.setEnabled(true); msgText.setEditable(true); else outBuf=msgText.getText().getBytes(); sendPack=new DatagramPacket(outBuf,outBuf.length,sendIP,sendPort); sendSocket.send(sendPack); showArea.append(
20、"我说:"+msgText.getText()+"n"); msgText.setText(null); catch(UnknownHostException el) showArea.append("无法连接到指定地址n"); catch(SocketException el) showArea.append("无法打开指定端口n"); catch(IOException el) showArea.append("发送数据失败n"); 3.3 测试函数 public void run() String msgstr; while(true) try receiveSocket.receive(receivePack); msgstr=new String(receivePack.getData(),0,receiveP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灌区内部员工奖励制度
- 煤炭公司内部管理制度
- 武汉铁路桥梁职业学院《造型基础一素描》2024-2025学年第二学期期末试卷
- 牧原内部奖罚管理制度
- 环卫处财务内部控制制度
- 画室内部规章制度范本
- 科室内部管理制度手册
- 科研经费内部公示制度
- 粮食内部审计制度
- 辽宁省医院内部审计制度
- 绿色低碳建筑设计 课件全套 第1-8章 绿色低碳建筑设计概论-实践案例分析
- 医疗器械出入库管理制度
- 2025 特斯拉Optimus22自由度灵巧手方案解析:人形机器人“好用”的关键
- 急诊急救肺性脑病
- 瑞文高级推理实验APM附有答案
- 居住区规划智慧树知到期末考试答案章节答案2024年湖南师范大学
- 2021年度企业所得税汇算清缴之《贷款损失准备金及纳税调整明细表》填报详解
- ISO27001 2022版管理评审全套资料
- 灵璧中学尸检报告
- 部编版小学语文四年级下册第一单元教材解读课件
- 眼镜各部件英语知识点梳理汇总
评论
0/150
提交评论