版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计任务书
2023—2023学年第二学期
专业:计算机科学与技术学号:()82501288姓名:
课程设计名称:计算机网络课程设计____________________________________
设计题目:多人聊天系统的设计与实现_____________________________________
完成期限:自2023年5月30口至2023年6月5口共1周
设计目的:该课程设计的目的主要是通过对简单聊天程序的设计及QQ原理的分析,了解
聊天程序的功能需求及工作原理;熟悉TCP/IP协议以及套节字编程原理.:熟悉Eclipse
编程环境及Sockct/ScrvcrSockct编程方法。
功能要求:根据现有条件,利用TCP/IP协议以及套节字编程原理实现多人聊天系统的设
i-和实现。
・、设计的任务:根据实际情况,进行需求分析,了解聊天程序的功能需求及工作原理:
熟悉TCP/IP协议以及套节字编程原理;熟悉Eclipse编程环境及Socket/ServerSocket编程
方法。
二、进度安排:
序号阶段内容所需时间
1布置任务及调研2天
2系统分析与设计2天
3调试及报告撰写3天
合计7天
三、主要参考资料:
“1谢希仁.计算机网络教程.北京:电子工业出版社社006.
(21卢泽新.路由器原理理设计.北京:电子工业出版社社003.
⑶方敏,张彤.网络应用程序设计.西安:电子科技大学出版社社005.
⑷黄超.Windows卜的网络编程.北京:人民邮电出版社社003.
指导教师(签字〕:教研室主任(签字):
批准日期:年月日
摘要
本课程设计主要是设t-并实现一个简单的聊天程序,该聊天程序能够支持多人聊天,
聊天的内容可以仅仅支持文本信息,聊天程序包括效劳器程序和客户端程序。在课程设计
中系统的开发平台为Eclipse程序运行平台为WindowsXPO
关键词:聊天程序;效劳器;客户端;Eclipse
目录
1引言1
1.1课程设计目的1
1.2课程设计要求1
1.3课程设计平台1
2需求分析1
2.1功能需求分析1
2.2数据需求分析2
2.3性能需求分析2
2.4运行需求分析3
3设计原理3
3.1聊天程序的工作原理3
3.2TCP/IP协议5
3.3套接字编程原理6
3.4Eclipse开发环境7
4设计步骤8
4.1聊天室的总体设计8
4.2聊天室的模块8
4.3程序的调试9
5问题分析9
总结10
参考文献10
1.引言
本课程设计主要是简单聊天程序的设计,使用MSN或QQ,分析聊天程序
的功能需求及工作原理。该聊天程序能够支持多人聊天,聊天的内容可以仅仅
支持文本信息,聊天程序包括效劳器程序和客户端程序。
1.1课程设计目的
该课程设计的目的主要是通过对简单聊天程序的设计及QQ原理的分析,了
解聊天程序的功能需求及工作原理;熟悉TCP/IP协议以及套节字编程原理;熟
悉Eclipse编程环境及Socket/ServerSocket编程方法。
1.2课程设计要求
(1)按要求编写课程设计报告书,能正确阐述设计结果。
(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作
精神。
(3)学会文献检索的根本方法和综合运用文献的能力。
(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。
1.3课程设计平台
课程设计中系统的开发平台为Eclipse,程序运行平台为WindowsXP。
2需求分析
2.1功能需求分析
(1)用户端之间的信息发送,本程序需要实现的最根本的功能。用户在
界面上可以将自己需要发送的信息填入相应的对话框中,点击发送按钮后,可
在出现不可知的错误以后,可以尽量平安的退出程序。在程序的设计过程中,
要求能尽可能多的设想到用户使用过程中可能发生的事件,并能在判断事件后
做出相应的处理,使程序具有较高的容错性能⑵。(2)宜操作性,程序简单易
懂,容易上手使用。设计界面是,简化界面的复杂性,模拟QQ等现有即时通
讯工具的界面,使用户能很容易看懂并使用。
(3)开发文档易理解,保证以后自己二次开发或他人接手开发时,能够
清晰的理解整个系统的设计思路和实现细节。
(4)模块化设计此软件的功能,不同的模块实现不同的功能,使得软件
易于以后的维护与扩展,在以后可以更好的完善本软件的功能,更方便于在工
作中的应用。
2.4运行需求分析
(1)用户界面
程序较小,启动速度快。可在网络中使用,有注册功能,需进行用户登录。
启动后的应用界面要清爽,设计要简单明了,要具有较高的易用性。
(2)故障处理
在遇到可预知的故障与情况时,能提示用户并自动退出;在遇到不可预知
的故障时能平安退出。
3设计原理
3.1聊天程序的工作原理
QQ聊天程序采用的是C/S通信模式,即客户/效劳模式,它把一个应用划
分成功能不同的两个局部,分别在不同的计算机上运行,其中一个为效劳端程
序,用来响应和提供固定的效劳,一个为客户端程序,用来向效劳端提出请求
和要求某种效劳。在数量关系上,通常有一对一的(即一个效劳端程序和一个
客户端程序之间通信),也有一对多的(即一个效劳端程序和多个客户端程序之
间通信),也有多对多的(即多个效劳端程序和多个客户端程序之间通信)。所
谓效劳端程序、客户端程序也是相对的概念,有时在一个程序中既有效劳端又
有客户端的功能。QQ聊天程序分成了两个程序,--个安装在腾讯公司的效劳
器上,我们称之为效劳端程序,一个安装在QQ用户的计算机上,我们称之为
客户端程序。在许多介绍网络通信编程的书籍中有关网络聊天的例了•,当•个
客户要与另一个客户聊天时,第一个客户先把聊天数据发送给效劳器,然后效
劳器再把聊天数据转发给第二个客户,效劳器好似一个中转站,这在客户数量
比拟少时,效劳器还能承受,在客户数量比拟多时,效劳器肯定要瘫痪。何况
客户之间还要传送文件、语音聊天、视频聊天等等,为了减少效劳器的压力,
各客户端之间需要直接通信。
(1)在效劳端和客户端之间(一对多)
用于客户端程序登录,验证用户密码,获取其它在线好友信息等等。
(2)在客户端和客户端之间(多对多)
用于在线好友间直接通信聊天。此时每个客户端程序上既有实现效劳端功
能的局部,又有实现客户端功能的局部,前者用于接收聊天数据,后者用于发
送聊天数据。
在用C/S模式进行通信时,作为客户端在请求与效劳端连接时需要知道效
劳端的IP地址,腾讯公司的效劳器具有固定的公网地址,这没有问题。但是在
客户端和客户端之间通信时,每个用户的IP地址都是ISP所给的临时地址,无
法固定,那么某个用户要与另一个用户连接时,怎么知道对方的IP地址呢?当
一个用户连接到Internet后,获得了一个临时的公网地址,当登录到QQ时,
QQ效劳端会获得该上线用户的IP地址,然后告知其他要与该上线用户聊天的
用户,其他用户就可以连接该用户与之直接通信了。
在Win32平台上,对于众多的基层网络协议,Winsock是访问它们的首选
接口。如果想从头开发一个网络通信应用程序,TCP/IP就是首选协议之一。为
了保证可靠的数据传输,宜选择TCP协议⑶。
3.2TCP/IP协议
TCP/TP(TransmissionControlProtocol/InternetProtocol)的简写,
中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是
Internet最根木的协议、Internet国际互联网络的根底,简单地说,就是由网
络层的IP协议和传输层的TCP协议组成的。
网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。
IP层接收由更低层(网络接口层例如以太网没备驱动程序)发来的数据包,
并把该数据包发送到更高层--TCP或UDP层;相反,IP层也把从TCP或UDP层
接收来的数据包传送到更低层。IP数据包是不可靠的,因为中并没有做任何
事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的
主机的地址(源地址)和接收它的主机的地址(目的地址)。
高层的TCP和UDP效劳在接收数据包时,通常假设包中的源地址是有
效的。也可以这样说,IP地址形成了许多效劳的认证根底,这些效劳相信数据
包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IPsource
routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP
和UDP的效劳来说,使用了该选项的TP包好似是从路径上的最后一个系统传递
过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了
它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址
做确认的效劳将产生问题并且会被非法入侵
如果IP数据包中有己经封好的TCP数据包,那么IP将把它们向‘上'传
送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数
据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可
以被重传。
TCP将它的信息送到更高层的应用程序,例如Telnet的效劳程序和客户程
序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备
驱动程序和物理介质,最后到接收方。
面向连接的效劳(例如Telnet、FTP、rlogin.XWindows和SMTP)需要
高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP[发送和接收
域名数据库),但使用UDP传送有关单个主机的信息。
3.3套接字编程原理
在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/效劳器模式
(Client/Servermodel)o该模式的建立基于以下两点:1、非对等作用;2、通
信完全是异步的。客户机/效劳器模式在操作过程中采取的是主动请示方式:
首先效劳器方要先启动,并根据请示提供相应效劳过程如下)
(1)翻开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客
户请求。
(2)等待客户请求到达该端口。
(3)接收到重复效劳请求,处理该请求并发送应答信号。
(4)返回第二步,等待另一客户请求
⑸关闭效劳器“
客户方:
(1)翻开一通信通道,并连接到效劳器所在主机的特定端口。
(2)向效劳器发送效劳请求报文,等待并接收应答;继续提出请求……
(3)请求结束后关闭通信通道并终止。
所谓的客户客户端/效劳器。是一种能够在基于网络环境的分布处理过程
中,使用基于连接的网络通信模型。该通信模型首先在客户机和效劳器之间定
义一套通信协议,并创立一个Sockel类,利用这个类来建立一条可靠的链接;
然后,客户端/效劳器再在这条连接上可靠地传输数据。客户端发出请求,效劳
器发出请求,效劳器监听来自客户机的请求,并为客户端提供相应效劳。
利用Socket类,我们可以轻松地实现网路客户端程序的编写,Socket类的
一些常用的方法汇总如下:
getLocalAddress()
读取套接字对象的本地地址。
getLocalPort()
读取套接字所使用的本地端口号。
getlnputStream()
得到一个输入流。
getOutputStreamO
得到•个输出流。
通常情况下,客户端只要能够顺序地处理效劳器程序的响应就可以了,因
此客户端程序通常不用使用多线程。
3.4Eclipse开发环境
Eclipse最初是由IBM公司开发的替代商业软件VisualAgeforJava的F一
代IDE开发环境,是著名的跨平台的自由集成开发环境。最初主要用来Java语
言开发,但是目前亦有人通过插件使其作为其他计算机语言比方C++和Python
的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有
其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse
为框架开发自己的IDE。
Eclipse采用的技犬是IBM公司开发的(SWT),这是一种基于Java的窗口
组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比
其他Java窗口组件更有效率。Eclipse的用户界面还使用了GUI中间层JFace,
从而简化了基于SWT的应用程序的构建。
Eclipse的插件机制是轻型软件组件化架构。住富客户机平台上,Eclipse使
用插件来提供所有的附加功能,例如支持Java以外的其他语言。已有的别离
的插件已经能够支持C/C++(CDT)、PerkRuby,Python>telnet和数据库开发。
插件架构能够支持将任意的扩展参加到现有环境中,例如配置管理,而决不仅
仅限于支持各种编程语言。
4设计步骤
4.1聊天室的总体设计
聊天室的总体设计过程比拟简单主要是构建设计框图。,就是当客户端发出
信息时,我们将数据写到socket,当对方有数据到达时,我们从socket读出来
并显示给客户。程序关键在于如何监听到有信息到达的过程。应用程序流程图
如下列图所示,开始是先创立主窗口,然后初始化窗口,程序下面才开始消息
循环处理。如果没有消息循环的活,直接结束掉这个程序。如果有循环的话,
要判断这个窗口消息的内容是哪种类型,然后再进行选择处理方式。然后依据
不同的内容选择“创立控件〃,还是要“判断命令",或是分别处理各种socket
的消息。流程图如图4・1所示
图4-1聊天室设计架构图
4.2聊天室的模块
聊天室主要包括三个模块,效劳器模块、客户端模块、信息处理模块。该
聊天室可以支持多人聊天,只支持文本信息。
(1)效劳器模块
其所包含的函数模块如下列图所示
图4-2效劳器模块图
(2)客户端模块
客户端所包含的函数模块如下列图所示
图4-3客户端模块图
(3)信息处理模块
信息处理模块包括注册信息及登录信息的处理模块,其所包含的函数模块
如下列图所示
图4-4信息处理模块图
4.3程序的调试
聊天室的程序模块如下列图所示
图4-5聊天室程序模块图
程序运行后,用户注册界面如下列国所示
图4-6用户注册界面
用户登录界面如下列图所示
图4-7用户登录界面
进入聊天室的聊天界面如下列图所示
图4-8聊天室界面
可以进行多人聊天,多人聊天如下列图所示
图4-9多人聊天
5问题分析
首先是对QQ软件的需求分析还有工作原理的熟悉,虽然平日用的已经很
熟练了,但原理方面的知识还是有点模糊,通过对资料的学习及一些小程序的
运行,聊天方面的原理才渐渐清晰。
由于之前没有学过Java,所以对Eclipse编程环境几乎是一无所知,在程序
编译过程中遇到的问题比拟多,主要是对那些错误还有警告开始都不知道什么
意思,花了两天的时间在程序的调试上面。另外就是一些概念性的知识欠缺,
尤其是套接字编程原理,所以对程序的一些函数的功能用法有些模糊。
其实遇到的种种问题主要是两方面的原因。一个是根底知识的掌握不够牢
固,概念的混淆,不能够很快的用最正确的方式去解决遇到的问题等等,都是
由于知识的不熟练导致。另一个就是Java局部知识的缺乏,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年南京工业职业技术大学单招职业倾向性考试题库带答案详解(新)
- 2026年兰州航空职业技术学院单招职业适应性测试题库含答案详解(典型题)
- 2026年兰州外语职业学院单招职业倾向性测试题库附参考答案详解(模拟题)
- 2026年信阳艺术职业学院单招职业技能测试题库带答案详解(预热题)
- 2026年娱乐VR游戏创新报告
- 高中生利用色谱分离技术分析净水器出水有机物去除率课题报告教学研究课题报告
- 2026年无人驾驶小巴市场创新报告
- 防腐保温工程技术质量评估方案
- 灌溉项目资金使用管理方案
- 砂滤池滤料优化方案
- 2025年浙江省纪委监委公开遴选公务员笔试试题及答案解析
- bz-高标准农田建设项目勘察设计技术投标方案210
- 节后交通安全培训课件
- 高三物理一轮复习力学试卷及答案
- 幼儿园营养餐制作标准及流程
- 种子管理课件
- 通信光缆运维管理办法
- DB32∕T 4981-2024 公路水运工程平安工地建设规范
- 2025宁波职业技术学院单招《物理》试题附参考答案详解【夺分金卷】
- 高血糖管理和糖尿病并发症预防
- 2025人教新版七年级下册英语单词字帖-意大利斜体
评论
0/150
提交评论