中南大学计算机网络设计方案聊天室
- 格式:doc
- 大小:316.00 KB
- 文档页数:21
《JSP网络编程》课程设计报告(2011— 2012学年第 1 学期)题目:聊天室目录目录 (II)1 概述 (1)1.1 设计目标 (1)1.2项目规划 (1)1.3开发工具的选择 (2)2 需求分析 (3)2.1 需求分析 (3)2.2 数据库表设计 (4)3 系统总体设计 (6)3.1系统结构 (6)4系统功能模块实现 (7)4.1登录和注册界面模块 (7)4.2 选择聊天室界面模块 (10)4.3 聊天室主界面模块 (12)4.4 用管理员高级功能管理模块 (20)5 调试分析 (28)6心得体会 (29)致谢 (30)参考文献 (31)1 概述1.1 设计目标从功能角色上来讲,在线聊天室可以有两种类型的用户,普通用户和管理员。
其中,普通用户在登录后,可以选择性的进入不同的聊天室,并通过聊天界面,向一人或多人发送聊天消息,进行聊天交流。
如果是第一次进入到该聊天室,还可以通过本模块提供的注册功能,提交注册信息,成为本聊天室的用户。
管理员在登陆后,除了可以聊天外,还可以拥有各种管理的权限,比如查看所有在线用户信息,还可以把一些不遵守聊天规则的用户赶出聊天室,甚至从数据库里把一些恶意聊天用户除名。
1.2项目规划本聊天室需要提供如下的界面和功能。
1、需要提供支持用户登陆以及身份验证的WEB界面和实现后台对应功能的模块。
在这个模块中,能根据登入者拥有的权限,分别开放不同的权限。
2、需要一个支持用户注册的界面和对应的后台模块。
3、需要为普通用户和管理员提供一个浏览所有聊天室的界面和对应后台功能模块。
在这个界面中,用户可以选择性的进入不同的聊天室。
4、需要为普通用户和管理员提供一个支持多人聊天的界面和对应的后台模块。
在这个界面中用户和管理员可以选择聊天对象,也可以想聊天对象发送信息。
5、需要为管理员提供一个查询所有用户的界面和对应的功能模块,这个界面其实就是管理员实现其管理功能的界面,在这个界面里,管理员可以实现“赶人”的功能,也可以实现“删除聊天用户”的动作。
聊天室软件课程设计一、课程目标知识目标:1. 了解聊天室软件的基本概念,掌握网络通信原理;2. 学习并掌握聊天室软件的功能模块和使用方法;3. 了解聊天室软件在人际沟通中的应用和影响。
技能目标:1. 学会使用聊天室软件进行文字、语音和视频聊天;2. 培养学生运用网络通信工具解决问题的能力;3. 提高学生在网络环境下的信息素养和自我保护意识。
情感态度价值观目标:1. 培养学生对网络通信工具的尊重和正确使用态度;2. 增强学生的团队协作意识,学会在网络环境中与他人友好交流;3. 培养学生遵守网络道德规范,树立正确的网络价值观。
课程性质:本课程为信息技术课程,旨在帮助学生了解聊天室软件的使用,提高网络沟通能力。
学生特点:六年级学生,对网络通信工具有一定了解,但使用经验和安全意识不足。
教学要求:结合学生特点,课程设计需注重实践操作和理论知识的结合,关注学生在网络环境下的安全和道德教育。
通过本课程的学习,使学生能够安全、有效地使用聊天室软件,培养良好的网络沟通素养。
二、教学内容1. 聊天室软件概述- 了解聊天室软件的定义、发展历程和分类;- 掌握聊天室软件的基本功能和使用场景。
2. 网络通信原理- 学习TCP/IP协议、Socket编程等基本网络通信知识;- 了解聊天室软件在网络通信中的工作原理。
3. 聊天室软件功能模块- 文字聊天:学习输入、发送、接收和查看消息的方法;- 语音和视频聊天:掌握语音、视频通话的设置和操作;- 表情和图片发送:了解聊天室软件中的多媒体功能。
4. 聊天室软件使用方法- 学习如何注册、登录和设置个人资料;- 掌握添加好友、创建群组和参与群聊的操作;- 了解聊天室软件的安全防护措施。
5. 网络沟通素养与安全- 学习网络沟通礼仪,培养良好的沟通习惯;- 了解网络安全知识,提高防范网络诈骗和侵害的意识;- 掌握个人信息保护的方法和技巧。
教学内容安排和进度:第一课时:聊天室软件概述、网络通信原理;第二课时:聊天室软件功能模块、使用方法;第三课时:网络沟通素养与安全。
网络编程实训----基于C#的网络聊天室设计计算机与通信工程学院网络工程系目录1. 实训目标 (3)2. 实训内容 (3)3. 基础知识、程序设计构思及参考代码 (3)3.1 面向连接的传输协议:TCP (3)3.2网络聊天程序的三种模式 (5)3.3服务端对端口进行侦听 (7)3.4 客户端与服务端连接 (8)3.4.1单一客户端与服务端连接 (8)3.4.2多个客户端与服务端连接 (9)3.5服务端获取客户端连接 (10)3.5.1获取单一客户端连接 (10)3.5.2获取多个客户端连接 (12)3.6服务端与客户端通信(同步传输字符串) (13)3.6.1.客户端发送,服务端接收并输出 (13)3.6.2 服务端回发,客户端接收并输出 (18)3.7服务端与客户端通信(异步传输字符串) (21)3.7.2 异步传输字符串 (25)3.8.1订立协议 (31)3.8.3客户端发送数据 (34)3.8.4 客户端接收文件 (41)4.实验感想 (48)1. 实训目标在前两周设计的网站中,增加聊天室功能,通过网络聊天室的设计,在掌握C#编程的基础上,进一步学会基于TCP/IP协议的网络编程。
通过实训内容将到达以下目标:熟悉基于套接字(Socket)进行网络编程的基本概念,其中包括TCP协议、套接字、聊天程序的三种开发模式,以及两个基本操作:侦听端口、连接远程服务端;掌握客户端与服务器端字符串的互传;理解并学会使用异步传输的方式来完成客户端与服务器端字符串的互传;学会客户端与服务端之间收发文件。
2. 实训内容学习网络编程基础知识,熟悉网络编程基本概念,设计实现可以进行在线聊天,也可能进行留言;可以将消息发送给一个人,也可以发给多个人;还可以向对方传送文件等。
具体的要求如下:程序可以进行登录;登录后可以通知其他在线用户;可以与其他用户进行对话;可以给其他用户留言;可以向其他用户传送文件;可以注销或者关闭。
基于局域网的视频聊天室系统的设计与实现摘要视频聊天系统作为一种新型的通信和交流工具,突破了地域的限制,可以提供更为便捷、灵活、全面的音、视频信息的传递和服务,具有极其广泛的发展前景。
本文介绍了采用Microsoft Visual C++ 6.0编程开发视频聊天系统的一套比较常用的解决方案。
文字聊天采用TCP模式;语音视频聊天采用UDP模式,在客户端之间点对点的进行。
在该方案中,通过函数库VFW来实现视频捕获、影像压缩以及影像播放。
微软公司提供的专门用于视频捕获开发的工具包VFW,为在Windows操作系统中实现视频捕获提供了标准的接口,从而大大降低了程序的开发难度。
在视频传输方面,则通过组建视频帧,将位图形式的视频帧压缩成帧格式的Mpeg4流,传输到客户端后,解压并显示影像。
同时,在本方案中,采用了线程来实现语音录制和语音回放,最终实现了通过服务器中转的文字聊天、点对点的语音视频聊天。
关键词:文字聊天;VFW;视频捕获;视频传输;语音录制;语音回放The Design and Realization of LAN-Based Video Chat RoomSystemAbstractAs a new tool about communication, video chatting system has broken through geographical restrictions, has provides more convenient, flexible and complete transmission and service. Furthermore, it has a very bright future.The common solution about how to develop a video chatting system is introduced by the Microsoft Visual C + + 6.0 programming. TCP model is used in the text chatting and UDP for the point-to-point video chats between the Clients. In this plan, Video Capture, Video Compression Manager and DrawDib are realized by the functions of VFW Library. The special kit VFW (Video for Windows) in video capture offered by Microsoft Corporation, has provided a standard interface for video capture in Windows Operating System and thus greatly reduced the hardship of programming. In video transmission aspect, it requires a video frame which is compressed the video frame of bitmap into Mpeg4 steam of frame form. Then it will be decompressed into images since it has been arrived the Client. Meanwhile, the thread is used to achieve audio recording and replaying. Finally, it has realized the text chatting through a server to transit, the point-to-point audio and video chats.Key words:text chatting; VFW; Video Capture; video transmission; audio recording;audio playing目录论文总页数:24页1 引言 (1)1.1 课题背景 (1)1.2 国内外研究现状 (1)2 理论知识介绍 (1)2.1 VFW简介 (1)2.2 线程的实现方法 (4)3 需求分析 (5)3.1 软硬件环境 (5)3.2 需求分析 (5)4 系统结构 (7)4.1 硬件结构 (7)4.2 软件结构 (7)4.2.1 功能需求 (7)4.2.2 系统功能模块图 (8)4.3 系统各模块流程图 (8)5 系统的详细设计 (10)5.1 文字聊天 (10)5.1.1 TCP套接字的运用 (10)5.1.2 文字聊天实现 (11)5.2 语音视频聊天 (13)5.2.1 UDP套接字的运用 (13)5.2.2 视频的捕获 (14)5.2.3 捕获窗口 (16)5.2.4 视频捕获驱动 (18)5.2.5 语音录制 (18)5.2.6 语音回放 (19)5.2.7 视音频的传输 (20)结论......................................................................................................... 错误!未定义书签。
计算机网络课程设计报告学生姓名学号班级计算机0908班指导教师设计时间2012.1.7~2012.1.10目录第一章设计目的、任务1.1设计目的 (3)1.2设计的任务 (3)第二章系统分析设计2.1系统流程分析 (4)2.2系统功能需求分析 (5)2.3系统运行要求 (6)2.4系统数据要求 (6)第三章系统实现3.1 系统界面设计 (7)3.2 系统功能模块设计 (9)第四章体会和建议第一章设计目的、任务1.1设计目的1.了解通信规范的细节及其实现。
2.通过本次网络课程设计,掌握高级编程语言中对用户界面的设计方法,以及多线程技术、基于TCP/IP的Socket通信的编程方法,同时能够把协议的设计思想应用到实际中去。
1.2设计的任务编写一个聊天室,实现C/S模式的会话。
基本要求可以完成群聊、私人聊天,实时发送和显示聊天信息,完成好友列表;进一步要求带表情,附件发送,聊天信息的加密传送,设置黑名单等。
学习通信编程Socket接口编程,使用TCP或UDP接口完成信息传送,利用多线程技术实现服务器端的多个TCP连接的建立。
网络聊天是网络编程的典型应用之一,编写网络聊天软件对于学习网络编程无疑有着很大的帮助。
第二章系统分析设计2.1系统流程分析该C/S模式的聊天系统,就是服务器来提供服务端连接响应,客户端主动的发起连接请求。
当多个用户同时连接到服务器时,经由服务器的接收与转发便可以实现客户之间的通信。
因此,系统需要实现服务器端和客户端两部分程序。
下图是基本的客户端连接服务器的流程图。
对于整体系统的流程,也是分为两部分,即客户端的发起请求,服务器响应请求。
首先是客户端的登陆,客户端在登陆时,必须设置所想要连接的服务器,然后客户端就会根据设置的服务器IP地址,向服务器发起建立连接请求。
而服务器端是始终在监听网络状态的,主要检测到有一个连接请求,那么服务器就会给当前的发起端分配一个服务线程,用于处理它的各种请求。
网络聊天室课程设计一、课程目标知识目标:1. 学生理解网络聊天室的基本概念,掌握网络交流的基本礼仪和技巧。
2. 学生了解网络聊天室的常用功能,学会使用相关软件或平台进行安全、文明的网络交流。
3. 学生掌握网络信息安全的基本知识,提高防范网络诈骗和不良信息的能力。
技能目标:1. 学生能够运用所学网络交流技巧,与他人进行有效沟通,表达自己的观点和需求。
2. 学生能够运用网络信息安全知识,保护个人隐私和信息安全,避免上当受骗。
3. 学生能够自主查找网络资源,拓展学习视野,提高信息素养。
情感态度价值观目标:1. 学生树立正确的网络道德观念,尊重他人,文明交流,自觉抵制不良信息。
2. 学生增强网络安全意识,遵守网络法律法规,积极维护网络环境和谐稳定。
3. 学生培养团队协作精神,学会在网络聊天室中与他人合作、分享,提升人际沟通能力。
课程性质:本课程为信息技术与网络素养教育相结合的实践课程,旨在帮助学生掌握网络聊天室相关知识,提高网络沟通能力,培养正确的网络道德观念。
学生特点:六年级学生具有一定的网络基础,好奇心强,善于接受新事物,但网络素养和安全意识有待提高。
教学要求:结合学生特点和课程性质,将课程目标分解为具体的学习成果,注重实践操作和案例分析,提高学生的网络素养和安全意识。
在教学过程中,关注学生的个体差异,鼓励学生积极参与,培养自主学习和团队合作能力。
通过课后评估,检验课程目标的达成情况,为后续教学提供依据。
二、教学内容1. 网络聊天室基础知识:- 网络聊天室的定义与功能- 常见的网络聊天软件与平台介绍2. 网络交流礼仪与技巧:- 网络沟通的基本原则- 文明用语与礼貌表达- 网络表情符号的正确使用3. 网络信息安全:- 个人信息保护意识- 网络诈骗类型及防范方法- 遵守网络法律法规,维护网络安全4. 实践操作:- 网络聊天软件的注册与使用- 网络聊天室中的文明交流与团队协作- 案例分析与讨论教材章节关联:本教学内容与教材中“网络素养与信息安全”章节相关,涉及以下内容:1. 网络聊天室基础知识:教材第3章第1节2. 网络交流礼仪与技巧:教材第3章第2节3. 网络信息安全:教材第4章第1节4. 实践操作:教材第3章和第4章的实践案例教学进度安排:1. 网络聊天室基础知识(1课时)2. 网络交流礼仪与技巧(1课时)3. 网络信息安全(1课时)4. 实践操作与案例分析(2课时)三、教学方法1. 讲授法:- 对于网络聊天室基础知识、网络信息安全等内容,采用讲授法进行教学,为学生提供系统的理论指导。
《计算机网络》课程设计报告设计题目:聊天室同组人姓名:王巍瑾马志超周旭同组人学号:201515151052015151510420151515138专业班级:计科153指导教师:金松林日期:2017年6月12日—16日一、题目意义和需求分析1.题目意义即时通讯或在线聊天是目前Internet上最为流行的通讯方式,用户之间通过文字传输信息。
这是一种可以让使用者在网络上建立私人聊天室的实时通讯服务。
除了简单的文字信息,使用者之间还可以互相发送文件、文档、音乐、视频等文件。
只要与服务器链接,无论对方在天涯海角,双方隔得多远都没有问题。
消息的实时更新,拉近了我们相知的桥梁,文件的相互传输,使同事之间办公更方便快捷。
2.需求分析a.注册当选择注册时,创建一个File文件类,载入“user.txt”,判断用户名是否已经存在,用户名有效后写入“user.txt”。
b.登录去“user.txt”读取用户数据,验证用户名是否存在,验证用户密码是否正确,如果以上验证全部正确,返回客户端信息,提示登陆成功进入聊天界面。
c.聊天所有已登录的用户的名称都会在列表中显示,然后就可以选择其中一个或多个发起聊天。
接收用户聊天信息,当用户发送聊天信息时,服务端将会收到客户端用Socket 传输过来的聊天信息对象,然后将其转换为Message对象,返回聊天信息,然后系统从Message中提取消息类型,再根据类型将消息转化后通过Socket转发到相应的用户。
d.文件传输在聊天的基础上增加了一个文件传输功能。
同事之间办公难免有一些资料的来往,在登录列表中选择一个用户或多个用户发送文件,等对方确认接收后即可建立连接进行文件传输。
二、设计说明聊天室总体分为三个模块,主要包括注册登录,聊天模块,文件传输模块。
系统运行在java环境中,要求java环境为JDK 1.8+;设计中的重点是通过Java中的ServerSocket搭建TCP服务器,通过在客户端创建Socket套接字连接服务器,然后通过ObjectOutputStream来发送Message(数据消息的封装类)对象让服务器接受。
成绩南京工程学院通信工程学院课程设计说明书(论文) 题目网络聊天室的设计课程名称通信应用软件课程设计专业多媒体通信班级媒通111学生姓名张瑜学号 208110515设计地点信息楼C-216指导教师耿鹏设计起止时间:2013年11月2日至2013年11月6日目录1.概述............................................... 错误!未定义书签。
2.设计介绍.. (5)2.1功能描述 (5)2.2流程图 (6)3.程序实现(关键代码解释) (10)4.功能演示(说明) (13)5.总结与展望 (14)6.参考文献.......................................... 错误!未定义书签。
61.概述1.1系统概述Linux是一种针对PC计算机和工作站得操作系统。
他具有像Windows和Mac 那样的功能齐全的图形用户界面。
由于Linux的开源的特点,越来越多的人转而使用Linux作为PC机得操作系统。
Linux系统支持三种并发方式:多进程、多线程、以及I/O多路复用。
而多线程技术是并行技术中开销较小,效率较高的一种方式,与其他两种方式相比,线程占用更少的系统资源,而且效率更高,是并发技术中最常用的方式。
网络聊天程序是目前应用极为广泛的一种网络软件,对于方便人们的交流沟通非常有效,同时,作为一种典型的网络应用,编写网络聊天程序是学习基于Linux的网络编程的有效方法。
服务器端:循环等候客户连接请求,一旦有客户连接请求,开启一个子线程接受并处理客户请求,接受来自客户的信息。
然后将客户信息反转后再返回给客户端。
主线程继续等待其他客户请求。
服务器具有同时处理多个用户的能力。
客户端:首先与服务器建立连接,然后向服务器发送数据进行交互,接受服务器的反馈信息并显示,之后继续等待用户输入直至用户输入ctrl+D结束通信。
客户端接到输入ctrl+D后,客户端关闭连接并退出。
tcp聊天室课程设计一、课程目标知识目标:1. 学生能理解TCP协议的基本原理,掌握聊天室建立过程中涉及的网络通信知识。
2. 学生能掌握网络编程中Socket的使用,了解基于TCP的客户端和服务器通信过程。
3. 学生了解数据传输过程中编码和解码的重要性,并掌握相关方法。
技能目标:1. 学生能运用所学知识,独立编写简单的TCP聊天室程序。
2. 学生具备调试和排查网络通信中可能出现的问题的能力。
3. 学生能够通过实际操作,体验网络编程的过程,提高实际动手能力。
情感态度价值观目标:1. 学生通过学习,培养对网络通信技术的兴趣,激发探索计算机网络世界的热情。
2. 学生在团队协作中,学会与他人沟通、分享和合作,培养良好的团队精神。
3. 学生认识到网络技术在实际应用中的价值,增强对所学知识的认同感和自信心。
课程性质分析:本课程为计算机网络编程实践课,注重理论与实践相结合,强调学生的动手操作能力和问题解决能力的培养。
学生特点分析:本年级学生具备一定的编程基础和网络知识,对新鲜事物充满好奇心,喜欢探索和实践。
教学要求:1. 教学内容与实际应用紧密结合,提高学生的学习兴趣和积极性。
2. 注重培养学生的动手操作能力和团队协作能力。
3. 教师应关注学生的个体差异,提供有针对性的指导,确保每位学生都能达到课程目标。
二、教学内容1. TCP协议原理:讲解TCP协议的特点、三次握手建立连接的过程、四次挥手断开连接的过程,结合教材相关章节,让学生深入理解TCP协议的工作机制。
2. 网络编程基础:介绍Socket编程的基本概念、类型和方法,以教材中网络编程章节为基础,让学生掌握基于TCP的客户端和服务器编程方法。
3. 聊天室程序设计:详细讲解聊天室程序的设计思路、功能模块划分,以及各模块的实现方法,结合教材案例,让学生学会编写简单的聊天室程序。
4. 数据传输与编码:分析聊天室中文字、表情等数据的传输过程,讲解编码和解码的方法,以教材相关内容为参考,让学生掌握数据传输中的编码和解码技巧。
网络聊天室c 课程设计一、课程目标知识目标:1. 让学生掌握网络聊天室的基本概念,了解其功能与用途;2. 使学生了解网络聊天室的礼仪与规范,提高网络安全意识;3. 帮助学生掌握运用网络聊天室进行交流的基本技巧。
技能目标:1. 培养学生运用网络聊天室进行文字、语音、视频沟通的能力;2. 培养学生搜集、整理、分享网络信息的能力;3. 提高学生在网络聊天室中的团队协作和沟通能力。
情感态度价值观目标:1. 培养学生热爱生活、关爱他人的情感,通过网络聊天室传播正能量;2. 增强学生的网络道德观念,自觉遵守网络法律法规,维护网络安全;3. 培养学生积极向上、乐观进取的心态,正确对待网络聊天室中的各种信息。
课程性质:本课程为信息技术学科,结合学生年级特点,注重实践操作和实际应用。
学生特点:六年级学生已具备一定的网络基础,对新鲜事物充满好奇,善于接受新知识,但自控能力较弱,需要引导。
教学要求:教师应结合课程内容和学生特点,采用启发式、讨论式教学,注重培养学生的实际操作能力和网络安全意识。
在教学过程中,关注学生的学习成果,确保课程目标的实现。
二、教学内容1. 网络聊天室的定义与功能:介绍网络聊天室的起源、发展,及其在日常生活和学习中的应用。
教材章节:第一章 网络聊天室概述2. 网络聊天室的分类与使用:讲解文字、语音、视频聊天室的特点及使用方法。
教材章节:第二章 网络聊天室的使用3. 网络聊天室礼仪与规范:学习网络聊天室的礼貌用语,了解网络安全法律法规,提高自我保护意识。
教材章节:第三章 网络聊天室礼仪与规范4. 网络聊天室沟通技巧:探讨如何有效表达、倾听和回应,提高沟通效果。
教材章节:第四章 网络聊天室沟通技巧5. 网络信息搜集与分享:培养学生搜集、整理、分享有价值信息的能力,提高网络素养。
教材章节:第五章 网络信息的搜集与分享6. 网络聊天室团队协作:学习在网络聊天室中进行团队协作的方法,提高团队沟通能力。
教材章节:第六章 网络聊天室团队协作教学内容安排与进度:第一课时:网络聊天室的定义与功能第二课时:网络聊天室的分类与使用第三课时:网络聊天室礼仪与规范第四课时:网络聊天室沟通技巧第五课时:网络信息搜集与分享第六课时:网络聊天室团队协作在教学过程中,教师需根据学生的实际情况,适时调整教学内容和进度,确保学生充分掌握网络聊天室的相关知识和技能。
中南大学CENTRAL SOUTH UNIVERSITY计算机网络课程设计报告学生姓名学号班级计算机0908班指导教师阳旺设计时间2012.1.7~2012.1.10目录第一章设计目的、任务1.1设计目的 (3)1.2设计的任务 (3)第二章系统分析设计2.1系统流程分析 (4)2.2系统功能需求分析 (5)2.3系统运行要求 (6)2.4系统数据要求 (6)第三章系统实现3.1 系统界面设计 (7)3.2 系统功能模块设计 (9)第四章体会和建议第一章设计目的、任务1.1设计目的1.了解通信规范的细节及其实现。
2.通过本次网络课程设计,掌握高级编程语言中对用户界面的设计方法,以及多线程技术、基于TCP/IP的Socket通信的编程方法,同时能够把协议的设计思想应用到实际中去。
1.2设计的任务编写一个聊天室,实现C/S模式的会话。
基本要求可以完成群聊、私人聊天,实时发送和显示聊天信息,完成好友列表;进一步要求带表情,附件发送,聊天信息的加密传送,设置黑名单等。
学习通信编程Socket接口编程,使用TCP或UDP接口完成信息传送,利用多线程技术实现服务器端的多个TCP连接的建立。
网络聊天是网络编程的典型应用之一,编写网络聊天软件对于学习网络编程无疑有着很大的帮助。
第二章系统分析设计2.1系统流程分析该C/S模式的聊天系统,就是服务器来提供服务端连接响应,客户端主动的发起连接请求。
当多个用户同时连接到服务器时,经由服务器的接收与转发便可以实现客户之间的通信。
因此,系统需要实现服务器端和客户端两部分程序。
下图是基本的客户端连接服务器的流程图。
对于整体系统的流程,也是分为两部分,即客户端的发起请求,服务器响应请求。
首先是客户端的登陆,客户端在登陆时,必须设置所想要连接的服务器,然后客户端就会根据设置的服务器IP地址,向服务器发起建立连接请求。
而服务器端是始终在监听网络状态的,主要检测到有一个连接请求,那么服务器就会给当前的发起端分配一个服务线程,用于处理它的各种请求。
对于客户端的各种请求,实际上都是通过在客户发往服务器的各种字符流区分的,具体的方法就是在消息的头部以及尾部添加特殊字符串,从而实现服务器对消息请求的识别。
比如对于登陆信息,消息的头部就是“PEOPLO”,而对于私聊中的消息,头部就是“SEC”,其他的同理都添加了头部。
当然,对于客户端来说,这些都是透明的,用户的操作并没有受到任何影响。
在服务器端,消息被检测分析后,变回根据具体的目的进行处理,比如是私聊消息,服务器便会根据其尾部的目的信息,向目标端转发该条消息。
这里额外要说的是,该系统特别的对用户发来的消息进行了加密处理,即用户的各种具体信息,不仅能够防止向第三方的泄漏,而且即使服务器端出现异常,信息也不会泄漏。
对于私聊的方式,该系统所采用的方法类似于QQ的通信方式,由发起方主动连接,当目的方接收到连接请求后,会主动建立一个私聊窗口,从而实现私聊。
2.2系统功能需求分析本系统所要实现的主要功能是为用户提供一个借助网络进行人际交往的平台。
因为服务端采用多线程,所以性能有很大提升。
因为服务端和客户端之间采用TCP/IP协议进行网络通信,建立的是可靠的、端到端的网络连接,所以可靠性和安全性都很好。
本系统主要通过客户端,服务器端来体现聊天系统的基本功能,两者主要的功能如下所示。
(1)服务器端1. 处理用户登录2. 处理用户的各种信息,包括状态信息、聊天信息等3. 监控聊天内容,过滤非法内容,并对不法用户实现拉入黑名单4. 处理用户退出(2)客户端1. 用户登录2. 用户发送信息3. 用户接收信息4. 用户之间的群聊5. 用户之间的私聊6、消息发来时,发出提示声音7. 显示当前在线用户列表,并且同步更新8. 用户私人信息的加密处理9. 用户退出2.3系统运行要求运行环境:Windows 9x、2000、XP、Windows 7必要环境:JDK 1.6以上、eclipse开发环境硬件环境:CPU 400MHz以上,内存512MB以上2.4系统数据要求1、系统中数据的传送是以字符串的形式传送的。
对于不同请求信息的区分是通过在字符串的头部添加系统信息实现的。
这些系统信息包括:PEOPLO、QUIT、SEC、MIMI、MSG。
PEOPLO代表该条信息是用户的登陆信息,QUIT代表该条信息是用户的登出信息,SEC代表该条信息是用户的私聊信息,MIMI代表该条信息是用户向另一个用户发起的建立私聊请求,MSG代表该条信息是用户发出的公聊信息。
2、在系统中,用户发出的各种私人信息都是在客户端进行加密的,然后服务器端转发到另一个用户后,在用户端再进行解密处理。
第三章系统实现3.1 系统界面设计1、服务器端(1)服务器运行中的界面图如下所示:2、客户端(1)客户端运行后的登陆界面图如下所示:(2)客户端运行后的主界面图如下所示:(3)客户端运行后的私聊界面图如下所示:3.2 系统功能模块设计1、服务器创建Serversocket,使用本地IP以及端口(port)1234建立套接字对网络进行监听,并对发来请求的客户创建连接,分配服务线程firstthread。
实现该功能的代码如下所示:listen = new ServerSocket(PORT);//创建一个服务器,进行监听try {while (true) // 保持监听客户端的请求{Socket client = listen.accept();//服务器监听st.append("\n新客户机器的IP地址:" + client.getInetAddress());firstthread f = new firstthread(this, client);// 为每一个客户创建一个客户端线程f.start(); // 客户端线程启动clients.addElement(f); // 将面向客户端的线程加入向量列表中st.append("\n聊天室当前人数: " + clients.size() + "\n");//添加显示新用户的信息,当用户退出时可以把新的数量提示服务器显示}} catch (IOException e) {System.err.println("error:" + e);System.exit(1);}2、服务器端对用户发来的头部带有MSG的公聊消息,进行广播。
下面是实现对消息进行广播,即发往所有用户的功能模块:public void broadcast(String msg) {firstthread you;for (int i = 0; i < clients.size(); i++) {you = (firstthread) clients.elementAt(i);try {you.out.writeUTF(msg);//向输出流写入信息} catch (IOException e) {}}}2、服务器端对用户发来的头部带有SEC的私聊消息,进行单播。
下面是实现对消息进行单播,即发往某单个用户的功能模块:// 向某个人发送悄悄话public void broadcast1(String msg) {String s1, s2, s3;firstthread you;s1 = new String("PEOPLE");//加上PEOPLE表示为新人消息s2 = new String(msg.substring(3)); // “SEC"为3个字符所以从第3个开始截取s3 = s1.concat(s2);//连接字符串for (int i = 0; i < clients.size(); i++) {you = (firstthread) clients.elementAt(i);//取出第i个客户int k = .indexOf("]");//】出现的位置,即可知整个用户名if (s3.startsWith(.substring(0,k+1)))// name格式为:PEOPLE+名字+[性别],截取前一段按照其查找相应的用户{try {you.out.writeUTF(msg);} catch (IOException e) {}}}}4、当服务器与客户端建立连接后,服务器会对每个客户建立一个服务线程,用于处理客户发来的各种请求。
实现该功能的代码如下所示:// firstthread构造函数public firstthread(Server server, Socket client) {// server参数用来调用公用的函数广播与单播this.server = server;//必须做,因为要把参数传送给firstthread类的变量this.client = client;try {in = new DataInputStream(client.getInputStream());// 获取向客户端的输入流out = new DataOutputStream(client.getOutputStream());firstout = new DataOutputStream(client.getOutputStream());} catch (IOException e) { // 输出输出流抛出异常try {server.clients.removeElement(this);//在客户表中删除client.close(); // 关闭socket} catch (IOException e2) {System.err.println("连接出现问题,请修复~" + e);return;}}}5、服务器端为客户端建立的线程主要实现的是对客户发来的各自消息的分析识别,即对消息头部的识别。
实现该功能的代码如下所示:// 面向客户端的线程始终监听try {while (true) {line = in.readUTF(); // line读取来自客户端的信息Mima sx=new Mima();// 信息开头为PEOPLE,表明有新用户进入了聊天室,则给当前的面向客户的服务线程赋值if (line.startsWith("PEOPLE")) {try{firstthread d = (firstthread)(server.clients.elementAt(server.clients.indexOf(this)));// this为发送新的的当前对象,则获取其线程 = line;//因为当前的用户名字就在line中,所以可以将line直接复制给当前线程的name变量} catch (ArrayIndexOutOfBoundsException e) {} catch (NullPointerException e) {} finally {server.broadcast(line);// 向聊天室所有人员发送有人进入聊天室信息,在各自的显示区显示欢迎信息}}// 以QUIT开头表明有人离开了聊天室else if (line.startsWith("QUIT")) {String str2 = ;str2=str2.substring(6);//在服务器显示退出者的姓名server.broadcast("QUIT" + );server.clients.removeElement(this);server.st.append("\n当前退出者:"+str2+"\n");//添加显示新用户的信息,当用户退出时可以把新的数量提示服务器显示server.st.append("\n聊天室当前人数: " +server.clients.size() + "\n");//添加显示新用户的信息,当用户退出时可以把新的数量提示服务器显示this.in.close();this.out.close();this.firstout.close(); // 关闭输入输出流this.client.close(); //关闭socketthis.yield();//线程放弃执行权}// 线路信息前端为MSG表明接收到的是广播else if (sx.jieMi(line,"a").startsWith("MSG")) {int n;int ssss=0;line=sx.jieMi(line,"a");n=line.indexOf("abc");if(n>=0){String as1="MIMI".concat(line.substring(3,line.indexOf("]")+1)).concat("服务器[ ]");JOptionPane.showMessageDialog(null, as1);as1=sx.jiaMi(as1,"a");server.broadcast2(as1);String as="SEC".concat(line.substring(3,line.indexOf("]"))).concat("你已经因敏感词汇被拉入黑名单!!(服务器)");as1=sx.jiaMi(as1,"a");server.broadcast1(as);}else{line=sx.jiaMi(line,"a");server.broadcast(line);}}// 线路信息前端为“SEC”表明接收到的是单播else if (line.startsWith("SEC")) {this.out.writeUTF(line); // 在自己的文本区显示server.broadcast1(line); // 在对方文本区显示}//MIMIelse if (line.startsWith("MIMI")) {server.broadcast2(line); // 在对方文本区显示}// 线路信息前端为newlist表明得到客户端刷新列表的请求else if (line.startsWith("newlist")) {try {for (int i = 0; i < server.clients.size(); i++) { firstthread c = (firstthread) (server.clients.elementAt(i));if ( != null) {try {firstout.writeUTF( + "*");//更新列表}catch (IOException e) {}}}} catch (ArrayIndexOutOfBoundsException e) {} catch (NullPointerException e) {}}}} catch (IOException e) {server.clients.removeElement(this);// 抛出异常的话就删除该线程} catch (NullPointerException e) {server.clients.removeElement(this);}}6、当客户端登陆成功后,客户端会产生聊天室主界面。