多人聊天程序课程设计报告
UML多用户聊天系统

删除用户的发言文本
4、非功能需求:
无
5、前置条件:
管理员登陆系统
6、后置条件:
用户文本被删除
7、扩展点:
无
8、优先级:
2
1、用例名称:
删除用户
2、简要说明:
管理员登陆后可以对用户进行删除
3、事件流:
管理员登陆执行删除操作
4、非功能需求:
无
5、前置条件:
管理员登陆执行删除操作
6、后置条件:
4、非功能需求:
可以自由的对表情库进行增加和删除操作
5、前置条件:
用户选择表情
6、后置条件:
将表情插入到合适的位置
7、扩展点:
无
8、优先级:
3
1、用例名称:
选择字体
2、简要说明:
用户选择由系统提供的字体格式
3、事件流:
用户从字体下拉菜单中选择字体体统按要求显示文本
4、非功能需求:
无
5、前置条件:
用户选择字体
系统利用本地数据库中所存的登陆帐号和密码进行验证
系统判断本次登陆是否有效,若正确则判断用户的类型,若错误则提示登陆
4、非功能需求:
界面设计要简洁合理,增加3次登陆失败24小时内禁止登陆功能
5、前置条件:
确保即时聊天系统已在后台启动 确保登陆前已注册有效的帐号和密码
6、后置条件:
用户在通过系统认证后将会进入即时聊天系统的交互界面,获得操作权限,可以进行聊天发言的操作
3
3.1
(一)必备功能说明
1)、用户管理:实现用户的注册,登录以及验证功能。
2)、用户账户管理:用户管理自身基本信息,例如:上一次登录时间,积分等。
聊天程序课程设计实验报告

聊天程序课程设计实验报告聊天程序的课程设计实验是一项相对复杂的课程设计。
本次实验的主要任务是开发一个由客户端和服务器组成的,可以实现客户端间的文本聊天的程序。
实验的具体实现方法是运用socket通信编程,使用C语言和JavaScript编写客户端和服务器端,利用html和css 构建聊天室的网页界面,实现客户端之间的聊天。
本次实验主要分为三部分:网络编程、网页构建和程序测试。
首先,实验者使用C语言编写客户端和服务器端,实现客户端之间的文本通信;接着,使用html和css构建聊天室网页界面,实现客户端的界面编程;最后,对实现的程序进行测试,确保程序实现所需要的功能。
本次实验实现了以上要求,实现了客户端之间的文本聊天和网页界面的构建,且程序在测试过程中没有发现任何问题,程序可以正常运行。
从这次实验中,实验者掌握了聊天程序的课程设计的相关知识,比如socket通信编程、html和css构建网页界面以及测试程序功能的方法,这些都可以在今后的聊天程序开发中发挥重要作用。
关键词:聊天程序;客户端;服务器;socket编程;HTML;CSS 1. 介绍聊天程序课程设计实验是一项通过计算机实现网络通信的一种实验项目,它包括客户端和服务器两部分,客户端主要是实现聊天室的界面,服务器则是负责网络通信的协调过程。
本次实验的主要任务是开发一个可以实现用户间文本聊天的程序,该程序包括客户端和服务器,可以使多个客户端之间进行文本聊天。
2.验准备本次实验的主要要求是实现一个可以实现多个客户端之间的文本聊天程序,因此需要考虑网络编程、网页构建以及程序测试等内容。
为了实现这一要求,首先要掌握socket编程,以及C语言和JavaScript等开发编程语言;其次,需要掌握HTML和CSS等网页构建语言;最后,也要掌握测试程序功能的方法。
3.验过程本次实验主要分为三部分:网络编程、网页构建和程序测试。
首先,实验者使用C语言开发客户端和服务器端,实现客户端之间的文本通信,同时也使用JavaScript语言实现客户端界面编程;接着,使用HTML和CSS构建聊天室网页界面,使聊天室更有趣;最后,对实现的程序进行测试,确保程序实现所需要的功能。
linux多人聊天程序系统课设心得

linux多人聊天程序系统课设心得(最新版4篇)篇1 目录I.引言II.Linux多人聊天程序系统课设的背景和意义III.课程设计的目的和内容IV.实现方法和步骤V.实现过程和结果VI.结论和收获篇1正文一、引言Linux多人聊天程序系统课设是一项具有实际意义的课程设计,旨在让学生掌握Linux系统编程和网络编程的基本知识和技能。
通过该课设,学生可以了解如何使用C语言编写网络通信程序,并掌握TCP/IP协议栈的工作原理。
二、背景和意义随着互联网的普及和发展,网络编程已成为计算机科学领域的重要分支。
Linux作为一种开源的操作系统,拥有庞大的开发者和用户群体,为网络编程提供了丰富的资源和广阔的平台。
掌握Linux系统编程和网络编程技能对于计算机专业学生来说至关重要。
三、目的和内容本课程设计的主要目的是让学生掌握Linux系统编程和网络编程的基本知识和技能,了解TCP/IP协议栈的工作原理,并能够使用C语言编写网络通信程序。
具体内容包括:设计并实现一个基于TCP协议的多人聊天程序,实现用户注册、登录、聊天、文件传输等功能。
四、实现方法和步骤实现方法采用C语言编写网络通信程序,使用TCP协议进行数据传输。
具体步骤如下:1.确定通信协议和数据格式;2.编写服务器端程序,实现TCP监听、接受连接、接收数据、发送数据等功能;3.编写客户端程序,实现TCP连接、发送数据、接收数据等功能;4.调试和测试程序,确保程序的正确性和稳定性。
五、实现过程和结果在实现过程中,我们遇到了许多问题。
例如,如何实现TCP协议的数据传输、如何处理并发连接、如何实现文件传输等。
通过不断地调试和测试,我们最终成功地实现了该程序。
篇2 目录I.引言II.Linux多人聊天程序系统课设的背景和意义III.课程设计的目的和内容IV.实现方法和步骤V.实现过程和结果VI.结论和收获篇2正文一、引言Linux多人聊天程序系统课设是一项具有实际意义的课程设计,旨在让学生掌握Linux系统编程和网络编程的基本知识和技能。
聊天程序实训报告总结(3篇)

第1篇一、实训背景随着互联网技术的飞速发展,聊天程序作为一种重要的网络应用,已经深入到人们的日常生活和工作中。
为了提高学生的实践能力,培养适应社会需求的技术人才,我们开展了本次聊天程序实训。
本次实训旨在通过实际编程,让学生掌握聊天程序的设计与实现,提高学生的编程能力和团队协作能力。
二、实训目标1. 理解聊天程序的基本原理和设计思路。
2. 掌握常用的编程语言和开发工具。
3. 能够独立设计和实现简单的聊天程序。
4. 培养良好的编程习惯和团队协作精神。
三、实训内容本次实训主要分为以下几个阶段:1. 需求分析在实训开始前,我们对聊天程序的需求进行了详细的分析。
主要包括以下功能:- 用户注册与登录- 文字消息发送与接收- 图片消息发送与接收- 多人聊天功能- 消息记录查看2. 系统设计根据需求分析,我们设计了以下系统架构:- 客户端:负责用户界面展示、消息发送与接收。
- 服务器端:负责用户管理、消息转发、数据存储等。
3. 技术选型在本次实训中,我们选择了以下技术:- 编程语言:Java- 开发工具:Eclipse- 数据库:MySQL- 消息传递:WebSocket4. 系统实现4.1 客户端实现客户端主要实现以下功能:- 用户注册与登录界面- 消息发送与接收界面- 图片消息发送与接收界面- 多人聊天界面4.2 服务器端实现服务器端主要实现以下功能:- 用户管理:包括用户注册、登录、信息修改等。
- 消息转发:负责将客户端发送的消息转发给对应的接收者。
- 数据存储:将用户信息和聊天记录存储在数据库中。
5. 系统测试在系统实现完成后,我们对聊天程序进行了详细的测试,包括功能测试、性能测试和安全性测试。
测试结果表明,聊天程序能够稳定运行,满足需求。
四、实训成果通过本次实训,我们取得了以下成果:1. 学生掌握了聊天程序的基本原理和设计思路。
2. 学生熟练掌握了Java编程语言和Eclipse开发工具。
3. 学生独立设计和实现了简单的聊天程序。
多人聊天室程序设计综合实验

程序设计综合实验•多人聊天室系统功能需求分析开发环境系统架构概要设计功能模块详细设计流程图补充知识算法伪码目录分工进度功能模块分工进度a需求分析项目开发计划聊天软件有很多种,如QQ,MSN,微信等,但它们通常都是不开源的,能否根据学过的知识,设计一个简单的聊天程序?本项目研发一个多人聊天室,让处在聊天室中的每一位成员都能够互相通信,并将聊天记录保存下来功能描述·需要一个图形用户接口(窗口界面)·文本输入框:用于输入一条消息·文本显示框:按顺序显示已经收到的消息和已经发送的消息·网络接口:用于在服务器和客户端建立连接·能将文本显示框中的内容保存在一个.txt文件中开发平台·Windows操作系统·Pycharm5.0.4集成开发环境·Python编程语言(版本为Python2.7.15)知识点、技术难点socket模块socket基本上是两个端点的程序之间的“信息通道”。
分布在不同计算机上的程序,通过套接字相互发送信息一个套接字就是socket模块中socket类的一个实例。
在创建一个服务器套接字后,让它等待连接。
这样它就在某个网络地址处(IP地址和一个端口号的组合)监听,直到有客户端套接字连接。
连接完成后,两者就可以进行交互了。
套接字有两个方法:send和recv,用于传输数据。
可以使用字符串参数调用send以发送数据,用一个所需的(最大)字节数作参数调用recv来接收数据。
知识点、技术难点wxPython——跨平台GUI工具包wxPython是一个成熟且特性丰富的GUI工具包,但在Python2版本中,需要另行下载安装,具体安装过程可以参考https:///xiongwanfeng/article/details/77995055用wxPython设计的超简单文本编辑器b概要设计界面设计建立连接信息交互系统架构关闭连接功能模块·socket模块:用于连接服务器与客户端,使聊天室中的成员可以相互通信·输入文本框:输入当前要发送的消息·显示文本框:输出截止至当前时刻已发送的历史消息·显示文本框的内容保存至一个.txt文件分工进度第一天第二天第三天第四天第五天组员1组员2组员3组员4联调集体讨论,确立分工,搭建并配置编程环境界面设计Socket模块设计实现服务器端设计实现客户端设计实现局部联调c详细设计程序流程图服务器端:客户端:开始建立套接字请求连接,观察是否成功建立连接并创建一个对话框输入文字进行对话是否关闭窗口结束否是否是开始创建套接字监听是否有连接请求建立新连接向全体成员发送有人加入聊天室是否关闭服务器结束算法伪码服务器端socket模块:s = socket.socket()host = socket.gethostname() port = 4321s.bind((host, port))s.listen(5)c, addr= s.accept()客户端socket模块:s = socket.socket()host = socket.gethostname() port = 4321s.connect((host, port))服务器端建立一个套接字,并将当前主机的用户名及端口号绑定在套接字上服务器端开始监听连接请求,当有连接请求时,获取客户端的套接字客户端创建套接字,并连接至服务器端算法伪码app = wx.App()win = wx.Frame(None, title=‘Server')bkg= wx.Panel(win)history_dialog= wx.TextCtrl(bkg,style=wx.TE_READONLY| wx.TE_MULTILINE | wx.HSCROLL)contents_input= wx.TextCtrl(bkg,style=wx.TE_MULTILINE| wx.HSCROLL)创建主窗口创建显示文本框创建输入文本框算法伪码发送消息def send_mssg(event):user_input = contents_input.GetValue()if user_input:message = 'Server: ' + time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime()) + '\n ' + user_input + '\n'try:c.send(message.encode('utf-8'))except(socket.error):print 'Warning: CONNECTION DROPPED'history_dialog.AppendText(message)contents_input.Clear()接收消息def recv_mssg():try:recv_message = c.recv(1024).decode('utf-8')except (OSError, socket.error):print 'Warning: SERVER ERROR'else:if recv_message:name, time1, time2, recv_contents = recv_message.split(' ', 3)message = name + ' ' + time.strftime("%Y-%m-%d %H:%M:%S ", time.localtime()) + recv_contents history_dialog.AppendText(message)else:passtimer = threading.Timer(0.1, recv_mssg)timer.setDaemon(True)timer.start()算法伪码def save(event):file = open(u'聊天记录.txt', 'w')file.write(history_dialog.GetValue().encode('utf-8')) file.close()SendButton= wx.Button(bkg, label='发送') SaveButton= wx.Button(bkg, label='保存') SendButton.Bind(wx.EVT_BUTTON, send_mssg) SaveButton.Bind(wx.EVT_BUTTON, save)将显示文本框的内容保存在一个.txt文件中创建”发送”和”保存”两个按钮将按钮和函数绑定在一起,即按下按钮时执行对应的函数d案例改进需要改进的方面·GUI界面不够美观设计更加丰富,美观的GUI界面·聊天室内的成员只能群聊,不能够向指定人发起私聊找到指定的成员,额外开启一个对话框进行私聊·ip地址和port端口已在程序中设置好,无法改变将ip地址和port端口作为用户输入保存起来,需要时进行调用e案例总结运行效果界面简洁基于wxPython 工具包的简单聊天程序支持全双工通信Python语言相比C++更加简单缺点优点不能传输附件THANKS!。
MFC课程设计报告-聊天室程序设计模板

河海大学计算机及信息工程学院MFC课程设计报告题目聊天室程序设计学号专业授课班号学生姓名指导教师完成时间题目:设计一个聊天室系统,实现多人一起聊天。
一.引言1.1开发背景随着网络信息时代的来临,INTERNET应用越来越广泛,人们越来越习惯于在网上获取和交流信息。
据调查显示,80%以上的人上网都会打开聊天工具来聊天,而几乎每一个年轻人都会去聊天。
使用网上聊天已经成为现代年轻人一种新的交往方式。
聊天室更适合于陌生人之间进行较为主观、感兴化的讨论。
所以有大部分的人会进入聊天室聊天,它会给人一个完全自由的聊天世界。
因此我联系所学的MFC 知识,决定做一个简易的聊天室程序。
1.2开发环境以及运行环境1.2.1 开发环境●Intel® Pentium® 4 2.0GHz,512M内存,80G硬盘●Mi crosoft® Windows™ XP Professional●Microsoft® Visual C++ 6.01.2.2 运行环境●Intel® Pentium® 2及以上处理器,32M以上内存,4G以上硬盘●Microsoft® Windows™ XP操作系统●800*600或以上的屏幕分辨率二.需求分析1、用WINSOCK实现简单的网络聊天;2、在MFC开发平台上编写一个聊天系统;3、得server和client之间可以相互通信;4、多人能够发送信息至服务器,首先显示进入聊天室的成员名,然后显示对方名字和聊天信息,可以并发执行。
三、算法分析建立连接过程流程图如下:Server端Client端创建CClientSocket对象,在某个端口提供监听服务等待来自Client端的服务请求接受Client端的请求,用返回的CClientSocket建立连接向用CClientSocket连接建立的流中读写数据关闭CClientSocket,结束与当前Client的通信,等待其他请求关闭CClientSocket对象,结束监听服务创建CChatSocket对象,向Server的监听端口发出请求向用CChatSocket连接建立的流中读写数据关闭CChatSocket,结束与当前Server端的通信建立连接拆除链路数据通路四、详细设计程序个模块代码如下:1.客户端(1)通过AppWizard生成基于对话框的应用程序ChatClient,在向导的第二步选择WindowsSockets的支持,其余步骤均用默认值。
多人聊天系统的设计与实现

课程设计任务书2010—2011学年第二学期专业:计算机科学与技术学号:082501288 姓名:课程设计名称:计算机网络课程设计设计题目:多人聊天系统的设计与实现完成期限:自2011年 5 月30日至2011 年 6 月 5 日共 1 周设计目的: 该课程设计的目的主要是通过对简单聊天程序的设计及QQ原理的分析,了解聊天程序的功能需求及工作原理;熟悉TCP/IP协议以及套节字编程原理;熟悉Eclipse编程环境及Socket/ServerSocket编程方法。
功能要求:根据现有条件,利用TCP/IP协议以及套节字编程原理实现多人聊天系统的设计和实现。
一、设计的任务:根据实际情况,进行需求分析,了解聊天程序的功能需求及工作原理;熟悉TCP/IP协议以及套节字编程原理;熟悉Eclipse编程环境及Socket/ServerSocket编程方法。
二、进度安排:序号阶段内容所需时间1 布置任务及调研2天2 系统分析与设计2天3 调试及报告撰写3天合计7天三、主要参考资料:[1] 谢希仁.计算机网络教程.北京: 电子工业出版社,2006.[2] 卢泽新.路由器原理与设计.北京:电子工业出版社,2003.[3] 方敏,张彤.网络应用程序设计.西安:电子科技大学出版社,2005.[4] 黄超.Windows下的网络编程.北京:人民邮电出版社,2003.指导教师(签字):教研室主任(签字):批准日期:年月日摘要本课程设计主要是设计并实现一个简单的聊天程序,该聊天程序能够支持多人聊天,聊天的内容可以仅仅支持文本信息,聊天程序包括服务器程序和客户端程序。
在课程设计中系统的开发平台为Eclipse程序运行平台为Windows XP。
关键词:聊天程序;服务器;客户端;Eclipse目录1 引言 (1)1.1 课程设计目的 (1)1.2 课程设计要求 (1)1.3 课程设计平台 (1)2 需求分析 (1)2.1功能需求分析 (1)2.2数据需求分析 (2)2.3性能需求分析 (3)2.4运行需求分析 (3)3 设计原理 (3)3.1 聊天程序的工作原理 (3)3.2 TCP/IP协议 (5)3.3 套接字编程原理 (6)3.4 Eclipse开发环境 (7)4 设计步骤 (8)4.1 聊天室的总体设计 (8)4.2 聊天室的模块 (9)4.3 程序的调试 (11)5 问题分析 (13)总结 (15)参考文献 (16)1 引言本课程设计主要是简单聊天程序的设计,使用MSN或QQ,分析聊天程序的功能需求及工作原理。
多人聊天室课程设计

多人聊天室课程设计一、课程目标知识目标:1. 学生能理解并掌握网络聊天室的基本概念与功能。
2. 学生能够了解并运用基本的网络沟通礼仪。
3. 学生能够掌握网络安全的基本知识,区分网络信息的安全性与可靠性。
技能目标:1. 学生能够独立创建并管理一个多人聊天室。
2. 学生能够在聊天室中与他人进行有效沟通,合理表达自己的观点。
3. 学生能够解决在聊天过程中遇到的技术问题,具备基本的网络故障排除能力。
情感态度价值观目标:1. 培养学生良好的网络沟通习惯,尊重他人,维护网络环境的和谐。
2. 增强学生的网络安全意识,树立正确的网络道德观念。
3. 激发学生对信息技术学科的兴趣,提高其主动学习的积极性。
分析课程性质、学生特点和教学要求,本课程旨在使学生在掌握网络聊天室相关知识的基础上,提高他们的实际操作能力和沟通技巧。
通过课程学习,使学生能够更好地适应数字化时代的社会交往需求,培养其具备安全、文明、有效的网络沟通能力。
同时,注重培养学生的情感态度价值观,使其在网络世界中形成正确的道德观念和行为准则。
后续教学设计和评估将以此为基础,确保课程目标的实现。
二、教学内容1. 网络聊天室的定义与功能:介绍网络聊天室的起源、发展及其在现实生活中的应用,使学生了解网络聊天室的分类和功能特点。
2. 网络沟通礼仪:讲解网络聊天过程中应遵守的基本礼仪,如尊重他人、文明用语、保护隐私等。
3. 网络安全知识:分析网络安全的重要性,介绍防范网络诈骗、保护个人信息等基本方法。
4. 聊天室创建与管理:详细讲解如何创建聊天室、设置权限、管理成员等操作,使学生具备实际操作能力。
5. 聊天技巧与沟通策略:教授如何在聊天室中展开话题、表达观点、处理争议等沟通技巧。
6. 网络故障排除:介绍网络聊天过程中可能遇到的问题及解决方法,提高学生的网络技术应用能力。
教学内容依据课程目标进行选择和组织,确保科学性和系统性。
教学大纲安排如下:第一课时:网络聊天室的定义与功能、网络沟通礼仪第二课时:网络安全知识、聊天室创建与管理第三课时:聊天技巧与沟通策略、网络故障排除教学内容与教材章节关联如下:第一章 网络基础知识第二节 网络沟通与应用三、教学方法本课程将采用以下多样化的教学方法,以激发学生的学习兴趣和主动性:1. 讲授法:教师通过生动的语言和实例,系统讲解网络聊天室的基础知识、网络沟通礼仪和网络安全等内容,为学生奠定扎实的理论基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
合肥学院计算机科学与技术系课程设计报告2011~2012学年第二学期课程Java语言程序设计课程设计名称多人聊天程序专业班级09网络工程(2)班姓名胡永雷指导教师张贯虹张艳明2012年9月一、需求分析聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客户机/服务器架构模式。
通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能。
用多线程可完成多点对多点的聊天。
主要有两个应用程序,分别为服务器程序和客户端程序。
服务器应用程序主要用于消息转发,以及向所有用户发送系统消息等;客户端应用程序主要用于客户聊天记录的显示和信息输入。
采用Client/Server(C/S)体系结构,即客户机/服务器体系结构。
聊天服务器专门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务器。
该聊天系统实现私聊,群聊,用户登陆,退出聊天系统等功能。
二、设计1.设计思想:课程设计中利用JAVA实现基于C/S模式的聊天程序。
聊天室共分为服务器端和客户端两部分,服务器端程序主要负责侦听客户发来的消息,客户端登录到服务器端才可以实现正常的聊天功能。
图1-1开始启动服务器判断启动信息启动客户端判断登录信息登录聊天室退出聊天室结束是是注册用户退出服务器否是否图1-22.功能设计(1)服务器端的主要功能如下。
在特定端口上进行侦听,等待客户端连接。
用户可以配置服务端的侦听端口,默认端口为8888.向已经连接到服务端的用户发送系统消息。
统计在线人数。
当停止服务时,断开所有用户连接。
(2)客户端的主要功能如下。
连接到已经开启聊天服务的服务端。
用户可以配置到连接服务器的IP地址和端口号。
用户可以配置连接后显示的用户名。
当服务器端开启的话,用户可以随时登录与注销。
用户可以向所有人或者某一个人发送消息。
3.详细设计聊天室服务器端设计聊天室服务器主要包括7个文件,他们功能如下。
(1)ChatServer.java包含名为ChatServer的public类,其主要功能为定义服务器端的界面,添加事件侦听与事件处理。
调用ServerListen 类来实现服务端用户上线与下线侦听,调用ServerReceive类来实现服务器端的消息收发。
(2)ServerListen.java该类实现服务端用户上线与下线的侦听。
该类对用户上线下线的侦听通过调用用户链表来实现,当用户上线与下线情况发生的时候,该类会对主类的界面进行相应的修改。
(3)ServerReceive.java该类是实现服务器消息收发的类,该类分别定义了向某用户及所有人发送消息的方法,发送消息会显示在主界面类的界面上。
(4)Portconf.java该类继承自JDialog,是用户对服务器端侦听端口进行配置的的类。
(5)Node.java用户链表的节点类,定义了链表中的用户。
(6)UserLinkList.java用户链表节点的具体实现类,该类通过构造函数构造用户链表,定义了添加用户、删除用户、返回用户数、根据用户名查找用户、根据索引查找用户这五个方法。
(7)Help.java服务器端的帮助类。
聊天室客户端设计聊天室客户端主要包括5个文件,他们的功能如下。
(1)Chatclient.java包含名为 Chatclient的Public类,其主要功能为定义客户端的界面,添加事件侦听与事件处理。
该类定义了Connect()与Disconnect()方法实现与服务器连接与断开连接。
当SendMessege()方法来向其他用户发送带有表情的消息或者悄悄话。
(2)ClientReceive.java该类是实现服务器端与客户端消息收发的类。
(3)ConnectConf.java该类继承自Jdialog,是用户所要连接的服务器IP及侦听端口进行修改配置的类。
(4)UserConf.java该类继承自Jdialog,是用户对连接到服务器时所显示的用户名进行修改配置的类。
(5)Help.java客户端程序的帮助类。
三、调试及测试1、调试过程中遇到的主要问题及解决方法程序中主要问题为:(1)套接字的通信问题网络上两个程序通过一个双向的通信链接实现数据交换,每一端都建立一个Socket,通过对Socket的读写操作实现网络的通信功能。
Socket通信程序的基本结构的基本结构主要有创建Socket、打开连接到Socket的输入流和输出流、按照一定的协议对Socket进行读写操作、关闭Socket这四个步骤。
为了完成Socket通信, 包中提供了Socket 和ServerSocket这两个类,他们分别用来表示双向连接的客户端和服务器。
构造函数如下:Socket(Inetaddress address,,int port)Socket (Inetaddress address, int port, Boolean stream)Socket (String host ,int port)Socket (String host ,int port, Boolean stream)ServerSocket (int port)ServerSocket ( int port, int count)通信模型中首先在客户机和服务器之间定义一套通信协议,并创立一个Socket 类,利用这个类建立一条可靠的链接;客户端发出请求,服务器端监听来自客户机的请求,并为客户端提供响应服务。
要是实现套接字的服务器端,要使用SocketServer类。
它允许程序绑定一个端口等待客户端的请求,一旦产生客户端请求,它将接受这一请求,同时产生一个完整的Socket连接对象。
服务器绑定端口必须公开,以便让客户端程序知道如何连接这个服务器。
同时作为服务器,它必须能够接受多个客户的请求,这就需要为服务器设置一个请求队列。
由于存在单个服器与多个客户程序通信,所以服务程序响应客户程序不应花很多时间,否则客户程序在得到服务前有可能花很多时间来等待通信的建立,然而服务程序和客户程序的会话可能很长,因此为加快对客户程序连接请求的响应,典型的方法是服务器主机运行一个后台线程,这个后台线程处理服务程序和客户程序的通信。
(2)数据报通信问题Java通过DatagramPacket和DatagramSocket两个类来实现UDP协议顶层的数据报。
DatagramPacket生成的对象表示一个数据报,而DatagramSocket 是用来发送和接受数据包的类。
生成DatagramPacket对象可以通过四个构造函数:DatagramPacket( byte data [ ],int size )DatagramPacket( byte data [ ],int offset, int size)DatagramPacket( byte data [ ],int size, InetAddress ipAddress, int port )DatagramPacket( byte data [ ], int offset, int size, InetAddress ipAddress, int port)对于DatagramPacket内部状态,可以使用如下方法获得:InetAddress getAddress()返回目标文件InetAddress,一般用于发送。
int getPort()返回端口号。
byte [ ] getData()返回包含在数据包中的字节数组数据。
int getLength()返回包含在将从getData()方法中返回字节数组的有效数据长度。
DatagramSocket类用来发送和结束数据包。
需要首先建立DatagramSocket对象来接收或发送数据报,然后使用DatagramPacket类对象作为传输数据的载体。
DatagramSocket类常用的构造函数:DatagramSocket()DatagramSocket(int port)DatagramSocket(int port,InetAddress ipAddress)DatagramSocket接收数据报要用receive(DatagramSocket p)方法,而发送数据报则使用send(DatagramSocket p)方法。
要发送一个数据报首先要创建一个DatagramPacket,指定要发送的数据、数据长度、数据要发送到哪个主机和端口,然后在用DatagramSocket的send()方法发送数据包;接收一个数据报必须创建一个在本地主机的特定端口上侦听的DatagramSocket,此套接字只能接收发送至特定端口上的数据包。
2、对设计和编码的回顾讨论和分析在本程序中,用户的存储时通过链表来实现的。
用了UserLinkList定义了链表及其操作,Node定义了用户链表节点。
用户链表的结点类:public class Node {String username = null;Socket socket = null;ObjectOutputStream output = null;ObjectInputStream input = null;Node next = null;}用户链表public class UserLinkList {Node root;Node pointer;int count;构造用户链表public UserLinkList(){root = new Node();root.next = null;pointer = null;count = 0;}添加用户public void addUser(Node n)删除用户public void delUser(Node n)返回用户数public int getCount()根据用户名查找用户public Node findUser(String username)根据索引查找用户public Node findUser(int index)3、程序运行的时空效率分析本程序应用了线程对端口进行侦听。
线程一直后台开启,长期占用系统资源,但又能及时的实现端口监听和消息的收发。
4、测试数据集服务器端程序主界面:图1-3 服务器侦听端口的配置:图1-4 服务器端帮助窗口:图1-5 服务器端启动时的界面:图1-6 确认停止服务器:图1-7 客户端用户名配置界面:图1-8客户端帮助界面:图1-9 客户端程序运行主界面:图1-10服务端关闭界面:图1-11四、经验和体会经过一个学期的JAVA课程学习了解了JAVA的基础理论知识,通过这次程序设计,进一步巩固、加深了我们所学专业课程的基本理论知识,理论联系实际,进一步培养了综合分析问题,解决问题的能力,进一步加强了JAVA的实际应用能力。