




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【摘 要】随着互联网的快速开展,网络聊天已经成为人们日常交流沟通的不可或缺的方式,很受人们的青睐。同时国内外也出现了很多非常不错的聊天工具,其中应用比拟广泛的有腾讯QQ、微软skype等等。本系统使用JAVA语言并基于C/S模式进行开发。通过Socket建立效劳器与客户端间的TCP连接,效劳器读取、转发客户端发来信息,并刷新用户列表。用流程图的方式对系统使用中的注册、登录、发送信息等过程进行分析,用直接继承Thread类来实现多线程,用TCP/IP协议进行客户端与效劳器端的通信,并使用网络编程的常用技术和一些软件工程的根本方法来完成聊天子系统和文件子系统的设计研发。在分析聊天系统的具体情况后,
2、本系统采用Eclipse为根本开发环境并使用java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改良,直到形成可行的系统。【关键词】 局域网 聊天 Socket JAVA Design and Implementation of Chat System based on C/S model【Abstract】 Along with the fast development of Internet, network chat has become indispensable to Peoples Daily communication, is very po
3、pular with the people . At the same time also appeared a lot of very good chat tools at home and abroad, is widely used in it have Tencent QQ、Skype and so on. This system is mainly based on the JAVA language and C/S mode of development. The server is established through the Socket, the server can re
4、ad and deliver the information which client side sends, and can renovate the users tabulation. With the LAN correspondence mechanism principle, through inheriting the Thread kind to establish the multithreading directly. In the development, it uses the elementary theory knowledge which the computer
5、network programme for example, TCP/IP agreement, Client/Server pattern, network programming design method and so on. In the network programming, it realizes reading and transmission of the information, that is,information flows realize the information exchange, introduce information flow analysis fo
6、r realizing a system, in which contains some basic software engineering methods. After analyzes these situations, this system takes Eclipse as the basic development environment and compiles in java language. first, it will establish the system application prototype in a short time. then, for the ini
7、tial prototype system, it needs constantly revised and improved, until a viable system.【Keywords】 LAN Chat Socket JAVA 目 录 TOC o 1-2 h z u HYPERLINK l _Toc2293 第一章 绪论 PAGEREF _Toc2293 1 HYPERLINK l _Toc32458 1.1 课题来源 PAGEREF _Toc32458 1 HYPERLINK l _Toc26729 1.2 国内外现状 PAGEREF _Toc26729 1 HYPERLINK l
8、 _Toc26980 1.3 研究的目的及意义 PAGEREF _Toc26980 2 HYPERLINK l _Toc3938 第二章 需求分析 PAGEREF _Toc3938 3 HYPERLINK l _Toc15180 2.1 系统定义 PAGEREF _Toc15180 3 HYPERLINK l _Toc21456 2.2可行性分析 PAGEREF _Toc21456 3 HYPERLINK l _Toc5037 2.3 功能需求 PAGEREF _Toc5037 3 HYPERLINK l _Toc23880 2.4 数据需求 PAGEREF _Toc23880 5 HYPER
9、LINK l _Toc13462 2.5 用户界面要求 PAGEREF _Toc13462 5 HYPERLINK l _Toc25405 第三章 数据库设计 PAGEREF _Toc25405 8 HYPERLINK l _Toc1730 3.1 数据库的概念 PAGEREF _Toc1730 8 HYPERLINK l _Toc26162 3.2 数据库的选择 PAGEREF _Toc26162 8 HYPERLINK l _Toc8345 3.3 数据库表的描述 PAGEREF _Toc8345 8 HYPERLINK l _Toc818 第四章 技术介绍 PAGEREF _Toc818
10、 12 HYPERLINK l _Toc4654 4.1 JAVA开发语言的选择 PAGEREF _Toc4654 12 HYPERLINK l _Toc15442 4.2 MVC设计模式 PAGEREF _Toc15442 13 HYPERLINK l _Toc1613 4.3 多线程简介 PAGEREF _Toc1613 15 HYPERLINK l _Toc9746 4.4 SQL语言 PAGEREF _Toc9746 15 HYPERLINK l _Toc2262 4.5 TCP/IP协议 PAGEREF _Toc2262 16 HYPERLINK l _Toc10439 4.6 So
11、cket的简介 PAGEREF _Toc10439 17 HYPERLINK l _Toc1260 第五章 系统实现 PAGEREF _Toc1260 19 HYPERLINK l _Toc16004 5.1 总体设计 PAGEREF _Toc16004 19 HYPERLINK l _Toc6427 5.2具体设计 PAGEREF _Toc6427 20 HYPERLINK l _Toc7007 第六章 结论 PAGEREF _Toc7007 43 HYPERLINK l _Toc14620 致 谢 PAGEREF _Toc14620 44 HYPERLINK l _Toc23417 参考文
12、献 PAGEREF _Toc23417 45 HYPERLINK l _Toc1552 附录 数据库连接 PAGEREF _Toc1552 46 第一章 绪论1.1 课题来源根据当前网络的需求,网络聊天越来越受各种网民所青睐。因此开发网络聊天是相当有必要,通过聊天系统,不仅可以提高访问量,同时可以留着访客,更重要的是让访客透过聊天系统实时的互相交流。而本人也学习过JAVA语言,对网络编程也较有兴趣,为了更好的考验自己对JAVA语言的掌握程度,本人就决定以“基于C/S模式的聊天系统的设计与实现为毕业设计,希望通过这一次的能进一步提高本人的网络开发编程的能力。1.2 国内外现状Java是Sun公司
13、开发的一种面向对象的新一代网络编程语言。它可以在各种不同的机器,操作系统的网络环境中进行开发,具有解释型语言(如Basic语言)和编译型语言(如C语言)的特性。Java摒弃了C+中各种弊大于利的功能和许多很少用到的功能,用Java开发的程序可以在网络上传输,并运行于任何装有Java虚拟机的客户机上,并且Java虚拟机可以在Sun公司的主页上免费下载安装。Java语言具有以下特点:简单性,面向对象,分布性,可靠性,平安性,体系结构中立,可移植性,解释执行,高性能,多线程和动态性。Java语言的特性使它可以最大程度的利用网络。近几年以来,即时通信成为互联网和电信行业最冲动人心的热点。2004年6月
14、,行业的主导效劳商腾讯在香港成功上市。7月,网易在北京推出了新版的即时通讯软件网易泡泡2004,新浪斥资近两亿元收购UC即时通讯技术平台,搜狐也推出即时通讯软件“搜Q。作为电信运营商的中国电信和中国网通也动作频频。在国外,互联网行业引人瞩目的新星GOOGLE据传也推出了自己的即时通信,全球即时通信行业的老大ICQ也进入中国市场,即时通信行业开展迅速,2021年行业增长率到达50,已经形成了收入规模为10亿人民币的不可无视的市场。目前国内面向个人的即时通信产品主要为腾讯QQ,微软MSN,网易泡泡,搜Q,新浪UC,ICQ,雅虎通,IMU以及电信的VIM等;面向企业用户的即时通信产品比拟多,但是除了
15、腾讯,微软等少数运营商用户比拟多以外,其他的推出时间很短,用户极少,市场有待开发。 现在中国即时通信市场的竞争格局中,腾讯一支独秀,占据80以上的市场份额。虽然目前绝大多数互联网用户都同时为即时通信用户但是随着互联网尤其是宽带用户数的迅速增长,未来假设干年内,中国即时通信用户数量还会猛增。即时通信的平安性和互连互通成为即时通信产品开展的主要制约因素。1.3 研究的目的及意义现在,企业、机关、学校纷纷建立起自己的局域网。在局域网,虽然可以通过文件共享的方式进行通讯,但单单使用这种方式,是非常不方便的。于是就想到做一个在局域网里的多功能聊天软件,在局域网里,我们可以通过它,实现在局域网里方便的联络
16、,进行文件传输,消息的发布,音频聊天,视频聊天等。在学校建立的校园网里,这软件可以方便同学之间、教师之间、师生之间的相互联络,这样,不用上Internet,还可以节省资源,在学校这个大环境里,可以方便同学之间联系,联络感情,促进同学之间的友谊,学生可以通过它来与不同寝室的同学,或教师讨论问题。并能最大限度地利用现有的网络资源,极大地提高工作效率。信息交流是互联网提供的主要内容,网络通信系统有多种实现方 式,类似ICQ属于一种点对点的聊天系统;还有一种是基于Socket的集中式聊天系统,这种聊天系统需要登录统一的聊天效劳器。考虑到要可以在局域网中应用,本系统使用的是第二种方法,经过设置,在局域网
17、或internet上都可以使用。 第二章 需求分析2.1 系统定义聊天系统的出现在一定程度上满足了人们对网络即时通信的要求,那么本系统作为一个简单的应用系统,为人们使用网络通信和对即时通信有需求的人提供效劳。另外采用C/S模式的原因是C/S模式的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给效劳器。对应的优点就是客户端响应速度快。2.2可行性分析1经济可行性:本系统需要一个MySQL数据库,由于使用人数比拟少,安装一个免费的MySQL 数据库完全满足需要,所以本钱就不用考虑了。 2操作可行性:只要一台以上计算机连接在同一个局域网内,本系统就可以安装使用,所以操作上完全
18、不存在问题。3技术可行性:本系统是基于C/S模式,使用java语言实现的。开发这个系统需要开发者对socket编程和java Swing这两方面的技术比拟熟。由于本人长期从事于java语言编程,所以技术方面是可行的。 综上所述,此聊天系统的设计是可行的。2.3 功能需求 本系统要实现的功能如下:1)注册效劳器收到用户的注册请求,便开始接受客户传递的信息,诸如客户的呢称,性别,籍贯,个人资料等,接受完毕后,便通过JDBC-ODBC与后台数据库连接,然后向数据库添加记录,如果成功,便向客户返回其号码。客户收到效劳器返回的信息后,便翻开主登陆窗口。2)登陆 在客户端,用户输入其号码和密码,然后建立与
19、效劳器的连接,告诉效劳器我要登录,效劳器收到后,开始通过JDBC-ODBC读取数据库,然后与用户输入的信息比拟,如果成功,便翻开主程序窗口。然后客户向效劳器请求读取好友名单,效劳器收到该请求,开始读取数据库中的表,得到好友的号码后,再在icq表中读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,并且建立几个矢量Vector用以存储好友的呢称,号码。3)私聊 私聊就是两个聊天。客户端首先发送消息到效劳器端,效劳器端根据发送人信息和接收者信息来转发。例如效劳器接收到一个A发给B的消息,先判断B是否已经在线,如果在线就将信息发送过去。B接收到A发来的信息,如果是未建立对话窗口,就
20、询问是否建立对话,否那么就丢弃信息。4)群聊 群聊,就是多人一起聊天。过程与私聊差不多。唯一的不同就是效劳器会将信息转发给指定群的所有成员。5)创立分组 用户注册以后默认的好友分组只有一个。用户在执行添加分组操作以后,客户端分将一个这个动作的信息发送给效劳器端主要是FromClientlisten。效劳器端的fromClientListen接收到这个请求,会进行数据库操作,将要添加的分组信息插入到数据库中。如果成功,那么返回这个分组的信息给客户端,否那么返回错误提示信息。6)创立群 用户注册以后群个数为0。用户在执行添加群操作以后,客户端分将一个这个动作的信息发送给效劳器端主要是FromCli
21、entlisten。效劳器端的fromClientListen接收到这个请求,会进行数据库操作,将要添加的群信息插入到数据库中。如果成功,那么返回这个群的信息给客户端,否那么返回错误提示信息。7)查找好友并加为好友 输入要查找的用户ID号,客户端发送一个查询信息给效劳器端,如果找到就返回用户效劳信息。翻开一个用户信息显示界面,该界面会提供一个“添加为好友按钮,点击后可将此人加为好友。如果未找到,弹出一个信息提示框。8)查找群并参加群 输入要查找的群ID号,客户端发送一个查询信息给效劳器端,如果找到就返回用户效劳信息。翻开一个群信息显示界面,该界面会提供一个“参加此群按钮,点击后可将此人加群。如
22、果未找到,那么弹出一个信息提示框。9)文件共享 在启动文件传输效劳器的共享文件功能之前,要设置它的IP号和端口,如果设置不好。好友将无法下看到这些共享的文件。还有一个重要的步骤就是添加共享文件或目录。最后启动文件共享。10)下载文件 使用文件传输的客户端要正确配置好效劳器的IP和端口号,以及下载好的文件的存放目录。如果其中之一配置不好,文件下载将会失败。设置好以后,点击“连接按钮,如果配置正确,这时将会看到效劳器共享的文件。目前不能支持文件夹下载,当看到一个文件夹以后,可以双击该文件夹并查看文件夹里面的文件。2.4 数据需求用户个人信息:用户个人信息应包含ID、账号、密码等。群 信 息:群信息
23、应包含群ID、用户ID、创立人、群名字等。好 友 信 息:好友信息应包含ID、用户ID、分组名等。2.5 用户界面要求一致性原那么坚持以用户体验为中心设计原那么,界面直观、简洁,操作方便快捷,用户接触软件后对界面上对应的功能一目了然、不需要太多培训就可以方便使用本应用系统。字体保持字体及颜色一致,防止一套主题出现多个字体;不可修改的字段,统一用灰色文字显示。对齐保持页面内元素对齐方式的一致,如无特殊情况应防止同一页面出现多种数据对齐方式。表单录入在包含必填的页面中,在必填项旁边给出醒目标识*;各类型数据输入需限制文本类型,并做格式校验如 号码输入只允许输入数字、邮箱地址需要包含“等,在用户输入
24、有误时给出明确提示。鼠标手势可点击的按钮、链接需要切换鼠标手势至手型;保持功能及内容描述一致防止同一功能描述使用多个词汇,如编辑和修改,新增和增加,删除和去除混用等。建议在工程开发阶段建立一个产品词典,包括产品中常用术语及描述,设计或开发人员严格按照产品词典中的术语词汇来展示文字信息。准确性原那么使用一致的标记、标准缩写和颜色,显示信息的含义应该非常明确,用户不必再参考其它信息源。显示有意义的出错信息,而不是单纯的程序错误代码。防止使用文本输入框来放置不可编辑的文字内容,不要文本将输入框当成标签使用。使用缩进和文本来辅助理解。使用用户语言词汇,而不是单纯的专业计算机术语。高效地使用显示器的显示
25、空间,但要防止空间过于拥挤。保持语言的一致性,如“确定对应“取消,“是对应“否。布局合理化原那么在进行UI设计时需要充分考虑布局的合理化问题,遵循用户从上而下,自左向右浏览、操作习惯,防止常用业务功能按键排列过于分散,以造成用户鼠标移动距离过长的弊端。多做“减法运算,将不常用的功能区块隐藏,以保持界面的简洁,使用户专注于主要业务操作流程,有利于提高软件的易用性及可用性。菜单保持菜单简洁性及分类的准确性,防止菜单深度超过3层。菜单中功能是需要翻开一个新页面来完成的,需要在菜单名字后面加上“。按钮确认操作按钮放置左边,取消或关闭按钮放置于右边。功能未完成功能必须隐藏处理,不要置于页面内容中,以免引
26、起误会。排版所有文字内容排版防止贴边显示页面边缘,尽量保持10-20像素的间距并在垂直方向上居中对齐;各控件元素间也保持至少10像素以上的间距,并确保控件元素不紧贴于页面边沿。表格数据列表字符型数据保持左对齐,数值型右对齐方便阅读比照,并根据字段要求,统一显示小数位位数。滚动条页面布局设计时应防止出现横向滚动条。页面导航面包屑导航在页面显眼位置应该出现面包屑导航栏,让用户知道当前所在页面的位置,并明确导航结构,如:首页新闻中心效劳平台正式发布,其中带下划线局部为可点击链接。信息提示窗口信息提示窗口应位于当前页面的居中位置,并适当弱化背景层以减少信息干扰,让用户把注意力集中在当前的信息提示窗口。
27、一般做法是在信息提示窗口的反面加一个半透明颜色填充的遮罩层。系统操作合理性原那么尽量确保用户在不使用鼠标只使用键盘的情况下也可以流畅地完成一些常用的业务操作,各控件间可以通过Tab键进行切换,并将可编辑的文本全选处理。查询检索类页面,在查询条件输入框内按回车应该自动触发查询操作。在进行一些不可逆或者删除操作时应该有信息提示用户,并让用户确认是否继续操作,必要时应该把操作造成的后果也告诉用户。信息提示窗口的“确认及“取消按钮需要分别映射键盘按键“Enter和“ESC。防止使用鼠标双击动作,不仅会增加用户操作难度,还可能会引过用户误会,认为功能点击无效。表单录入页面,需要把输入焦点定位到第一个输入
28、项。用户通过Tab键可以在输入框或操作按钮间切换,并注意Tab的操作应该遵循从左向右、从上而下的顺序。系统响应时间原那么系统响应时间应该适中,响应时间过长,用户就会感到不安和沮丧,而响应时间过快也会影响到用户的操作节奏,并可能导致错误。因此在系统响应时间上坚持如下原那么:2-5秒窗口显示处理信息提示,防止用户误认为没响应而重复操作;5秒以上显示处理窗口,或显示进度条;一个长时间的处理完成时应给予完成警告信息 第三章 数据库设计 3.1 数据库的概念当人们从不同的角度来描述这一概念时就有不同的定义。例如,称数据库是一个“记录保存系统(该定义强调了数据库是假设干记录的集合)。又如称数据库是“人们为
29、解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合(该定义侧重于数据的组织)。更有甚者称数据库是“一个数据仓库。当然,这种说法虽然形象,但并不严谨。严格地说,数据库是“按照数据结构来组织、存储和管理数据的仓库。本系统将使用一直以来使用都最为广泛的关系模型作为数据库的建设依据。在用户的观点下,关系模型中数据的逻辑结构是一张二维表,一个关系对应通常说的一张表,并且关系的每一个分量必须是一个不可分的数据项。而一个基于关系模型的数据库那么是由假设干个二维表组成的。对于一些大型和中型的数据库,如Oracle,SQL Server 2000/7.0等都属于关系型数据库,同时它们所带有的数据库管理
30、工具是其他小型数据库所没有的,而同时这些工具又为管理员的工作节省了很多的时间和财力。3.2 数据库的选择本系统使用MySQL 5.6实现关系型数据库。MySQL是一个真正的多用户、多线程SQL数据库效劳器,它有较好的数据承载能力,一个环境有超过40个数据库,包含10,000个表,其中500多个表超过7百万行,总数据大约有100GB的数据库系统可以很好的被MySQL所支持,而MySQL本身不会像Oracle那样对系统及硬盘空间有很高的要求。这也是本系统选用MySQL作为后台数据库系统的一个重要原因之一。3.3 数据库表的描述概念模型是对信息世界建模,其表示方法有很多,其中最为常用的是实体联系模型
31、,即ER模型,它是用ER图来描述现实世界的概念模型。ER图中用矩形表示实体;用椭圆表示属性;用菱形表示联系。为了清楚简便的描述出实体与其属性之间的关系,完整的包含系统功能结构图如下:3.3.1 用户信息表userinfo该表主要完成用户根本信息的录入,在此表中定义了8个字段包括id、账号、密码、昵称、性别、邮箱等个字段来进行对用户的信息存储,具体如下:标识符数据类型长度非空描述主键外键说明idINT11YY自增accountVARCHAR30Y账号passwordVARCHAR30Y密码nicknameVARCHAR30Y昵称sexINTEGER10性别用0,1表示,1男,0女emailVAR
32、CHAR30Y邮箱createtimedatetime自动创立日期headVARCHAR30头像 消息表mess该表主要用于用户进行聊天时相关信息的录入,包括id、发信人、收信人、信息内容等4个字段,具体如下:标识符数据类型长度非空描述主键外键说明idINT11YY自增acc-fromVARCHAR30Y发信人Acc-toVARCHAR30Y收信人contentVARCHAR30Y信息内容3.3.3 分组表user-ongroup标识符数据类型长度非空描述主键外键说明idINT11YY自增useridINT11Y拥有者nameVARCHAR30Y分组名3.3.4 公共群表public-grou
33、p标识符数据类型长度非空描述主键外键说明idINT11YY自增useridINT11Y创立人nameVARCHAR30Y群名称signVARCHAR30Y群内消息3.3.4 用户与群的中间表user-group标识符数据类型长度非空描述主键外键说明idINT11YY自增groupidINT11Y参加的群useridINT11Y参加的用户3.3.4 用户与分组的中间表user-ongroup标识符数据类型长度非空描述主键外键说明idINT11YY自增groupidINT11Y参加的分组useridINT11Y参加的用户3.3.5 历史信息表historymess标识符数据类型长度非空描述主键外键
34、说明idINT11YY自增acc-fromVARCHAR30Y发信人Acc-toVARCHAR30Y收信人contentVARCHAR30Y历史信息内容3.3.6 离线信息表offlinemess标识符数据类型长度非空描述主键外键说明idINT11YY自增acc-fromVARCHAR30Y发信人Acc-toVARCHAR30Y收信人contentVARCHAR30Y离线信息内容 第四章 技术介绍4.1 JAVA开发语言的选择 现在,市场上可以选购的应用开发产品很多,流行的也有数十种。目前在我国市场上最为流行,使用最多,最为先进的可用作企业级开发语言的产品有: SUN公司的JavaMicros
35、oft公司的Visual BasicMicrosoft公司的Visual CBorland公司的DelphiPowersoft公司的PowerBulider在目前市场上这些众多的程序开发工具中,有些强调语言的弹性与执行效率;有些偏重于可视化程序开发工具所带来的便利性与效率的提高,各有各的优点和特色,也满足了不同用户的不同需求。我的系统选择Java语言开发,其原因基于以下几点:Java是一种简单的、面向对象的、分布式的、健壮的、平安的、结构中立的、可移植的、性能很优异的、多线程的、动态的语言。 1简单 Java的风格类似于C+,并且摒弃了C+中容易引发程序错误的地方,如指针和内存管理。 此外Ja
36、va提供了丰富的类库。 2面向对象 面向对象可以说是Java最重要的特性。Java语言的设计完全是面向对象的。Java支持静态和动态风格的代码继承及重用。 3三、分布式 Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序可凭借URL翻开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。4健壮 Java致力于检查程序在编译和运行时的错误。Java自己操纵内存减少了内存出错的可能性。Java提供Null指针检测数组边界、检测异常出口、字节代码校验。 5平安 Java的平安性可从两个方面得到保证。一方面,在Java语言里,像指针和释放内存等C+功能被
37、删除,防止了非法内存操作。另一方面,当Java用来创立浏览器时,语言功能和浏览器本身提供的功能结合起来,使它更平安。6结构中立 为了建立Java作为网络的一个整体,Java将它的程序编译成一种结构中立的中间文件格式。只要有Java运行系统的机器都能执行这种中间代码。Java源程序被编译成一种高层次的与机器无关的byte-code格式语言,这种语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。 7可移植的 Java的可移植性一直是Java程序设计师们的精神指标,也是Java之所以能够受到程序设计师们喜爱的原因之一,最大的功臣就是JVM的技术。JAVA编译器产生的目标代码(J-Code)
38、是针对一种并不存在的CPU-JAVA虚拟机(JAVA Virtual Machine),而不是某一实际的CPU。JAVA虚拟机能掩盖不同CPU之间的差异,使J-Code能运行于任何具有JAVA虚拟机的机器上。 8高性能 Java可以在运行时直接将目标代码翻译成机器指令。Sun用直接解释器一秒钟内可调用300,000个过程。翻译目标代码的速度与C/C+的性能没什么区别。 9多线程 Java支持多线程,多线程功能使得在一个程序里可同时执行多个小任务。线程,有时也称小进程,是一个大进程里分出来的小的独立的进程。10动态 Java的动态特性是其面向对象设计方法的开展。它允许程序动态地装入运行过程中所需
39、要的类,这是C+语言进行面向对象程序设计所无法实现的。Java编译器不是将对实例变量和成员函数的引用编译为数值引用,而是将符号引用信息在字节码中保存下传递给解释器,再由解释器在完成动态连接类后,将符号引用信息转换为数值偏移量。4.2 MVC设计模式MVC是Model-View-Controller的简称,它是一种设计模式,它把应用程序分成三个核心模块:模型、视图、控制器,它们各自处理自己的任务。视图是用户看到并与之交互的界面,作用包括向用户显示相关的数据、接受用户的输入、向模型查询业务状态、接受模型发出的数据更新事件,从而对用户界面进行同步更新。它从模型那里获得数据并指定这些数据如何表现。当模
40、型变化时,将负责维持数据表现的一致性。并同时将用户要求告知控制器Controller。 模型表示业务数据和业务逻辑,是应用程序的主体局部。一个模型能为多个视图提供数据,因此提高了代码的可重用性。控制器接受用户的输入并调用模型和视图去完成用户的需求。当Web用户单击Web页面中的递交按钮来发送HTML表单时,控制器本身不输出任何东西和做任何处理。控制器接收请求并决定调用哪个模型组件去处理请求,然后决定调用哪个视图来显示模型处理返回的数据。它负责对来自视的用户要求进行解释,并把这些要求映射成相应的行为,这些行为由模型负责实现。在独立运行的GUI客户端,用户要求可能是一些鼠标单击或是菜单项选择择操作
41、。在一个Web应用程序中,它们的表现形式可能是一些来自客户端的GET或POST的HTTP请求。模型所实现的行为包括处理业务和修改模型的状态。根据用户要求和模型行为的结果,控制器选择一个视作为对用户请求的应答。通常一组相关功能集对应一个控制器MVC的优点表现在如下几个方面:1)首先,最重要的一点是多个视图能共享一个模型。同一个模型可以被不同的视图重用,大大提高了代码的可重用性。 2)由于MVC的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的松偶合的构件。 3)此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来 联接不同的模型和视图去完成用户的需求,这样
42、控制器可以为构造应用程序提供强有力的手段。 MVC处理过程的结构图:4.3 多线程简介 线程是指进程中单一顺序的控制流,又称为轻量级进程。线程共享相同的地址。空间并共同构成一个大的进程。线程间的通讯是非常简单而有效的, 上下切换非常快。线程使得在一个应用程序中, 程序的编写更加自由和丰富。多线程是相对于单线程而言的, 是指在一个程序中可以定义多个线程并同时运行它们, 每个线程可以执行不同的任务。多线程不同于多任务, 多任务是指操作系统而言, 而多线程是针对一个程序而言, 也就是一个程序内部可以同时执行的线程有多个, 而每个线程可以完成不同的任务。4.4 SQL语言SQL是一个功能强大的数据库语
43、言。SQL通常使用于数据库的通讯。SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比方在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、 Microsoft SQL Server、 access等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比方select、 insert、 update、 delete、 create和 drop常常被用于完成绝大多数数据库的操作。SQL语言有着非常突出的优点,主要是:非过程化语言,统一的语言,是所有关系数
44、据库的公共语言。非过程化语言:SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。统一的语言:SQL可用于所有用户的db活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。SQL为许多任务提供了命令,其中包括:查询数据, 在表中插入、修改和删除记录,建立、修改和删除数据对象, 控制对数据和数据对象的存取, 保证数据库一致性和完整性。以前的
45、数据库管理系统为上述各类操作提供单独的语言,而SQL 将全部任务统一在一种语言中。SQL功能强大,是一种完备的数据处理语言,不仅用于数据库查询,而且用于数据库中的数据修改和更新,概括起来,它可以分成以下几组:dmldata manipulation language,数据操作语言:用于检索或者修改数据; ddldata definition language,数据定义语言: 用于定义数据的结构,比方 创立、修改或者删除数据库对象; dcldata control language,数据控制语言:用于定义数据库用户的权限。dml组可以细分为以下的几个语句:select:用于检索数据;insert
46、:用于增加数据到数据库;update:用于从数据库中修改现存的数据;delete:用于从数据库中删除数据。ddl语句可以用于创立用户和重建数据库对象。4.5 TCP/IP协议(1)IP、TCP协议的特点:TCP/IPTransmission Control Protocol/Internet Protocol是传输控制协议/网际协议的缩写, TCP/IP是当今网络互联的核心协议。TCP/IP协议的体系结构共有四个层次,即应用层、传输层、网络互联层和网络接口层。IP协议的作用:第一,它是网络层的协议,提供互联网上数据传输的统一格式。第二,提供不可靠的无连接的效劳。第三,定义了互联网上的传输数据的
47、根本单元,提供了供路由选择的信息,没有过失校验和处理的机制。TCP协议的功能:过失控制可靠性、面向连接、分段Segment、端口号。TCP是传输控制协议,是面向连接的提供了一种可靠的传输效劳,它用三次握手和滑动窗口机制来保证传输的可靠性,及进行流量控制。 TCP/IP协议具有以下特点:协议标准具有开放性,其独立于特定的计算机硬件及操作系统,可以免费使用。统一分配网络地址,使得每个TCP/IP 设备在网络中都具有唯一的IP地址。实现了高层协议的标准化,能为用户提供多种可靠的效劳。(2)TCP/IP协议进行传输数据传输的过程:应用程序为了传输数据会调用TCP,将数据和对应的参数传给TCP,将TCP
48、 数据包封装在IP包内,通过网络送给目的TCP。接收方TCP在接收到数据后通知上层应用程序,TCP将保证接收数据的正确性。在实现TCP的主机上,TCP可以被看成是一个模块,和文件系统区别不大,TCP 也可以调用一些操作系统的功能,TCP不直接和网络打交道,控制网络的任务由专门的设备驱动模块完成。TCP只是调用IP接口,向TCP提供所有TCP需要的效劳。(3)端口号:有的时候,一个ip地址不能完整的标识一台效劳器,这是因为一台物理性的计算机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的效劳,所以就在传输层和应用层上设置接口,就是 端口。端口实际是一个16位长的 地址,他的范围是0
49、65535之间,其中01023是熟知端口,主要是给提供效劳的应用程序使用,这些端口是所有应用进程都只道的,102465535为一般端口,也称动态端口、连接端口,用来随时分配给要求通信的个客户端应用程序。在数据传输过程中,各种效劳器不断的检测分配给他的端口,一边发现要求和他通信的客户端。4.6 Socket的简介Socket,简称套接字,用于实现网络上客户和效劳器之间的连接。也就是说网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点成为套接字,套接字是在比拟低的层次上通信的。在Windows网络编程中,套接字接口主要有3种类型:流式套接字,数据报套接字以及原始套接字。流式套接
50、字定义了一种面向连接的效劳,实现了无过失无重复的顺序数据传输,无长度限制。数据报套接字接口定义了一种无连接的效劳,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠。原始套接字允许对低层协议IP或ICMP直接访问,主要应用网络协议的测试,例如Windows自带的Ping程序,就是通过ICMP实现的。具体的说:一个效劳器应用程序一般侦听一个特定的端口等待客户端的连接请求,当一个连接请求到达时,客户端和效劳器端建立一个通信连接,在连接过程中,客户端被分配一个本地端口与一个socket建立连接,客户端通过写socket来通知效劳器,以读socket中的信息,类似的效劳器也获得一个本地端口,它需
51、要一个新的端口号来侦听原始端口上的其他连接请求。效劳器也通过它的本地端口连接一个socket,通过读写和客户端通信。Socket程序的工作过程:1、建立Socket连接:在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。2、数据通信:利用虚拟连接通道传送数据信息进行通道。3、关闭:通信结束时,再将所建的虚拟连接撤除。具体调用流程如下: 4.7 开发环境操作系统:WINDOWS 7;开发工具:Eclipse 8.5 数据库:MySQL 5.效劳器: Tomcat 6.0支持软件: CPU:酷睿2双核T5750 2.00GHz硬件环境:2G内存 第五章 系统实现5.1 总体设计 聊天系
52、统的总体设计要点 聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天系统只要提供满足访客双方直接实时聊天即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:1、实现思想在Internet上的聊天程序一般都是以效劳器提供效劳端连接响应,使用者通过客户端程序登录到效劳器,就可以与登录在同一效劳器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现效劳器端和客户端两局部程序。2、效劳器端工作流程效劳器端通过socket()系统调用创立一个Socket数组后(即设定了接受连接客
53、户的最大数目),与指定的本地端口绑定bind(),就可以在端口进行侦听listen()。如果有客户端连接请求,那么在数组中选择一个空Socket,将客户端地址赋给这个Socket。然后登录成功的客户就可以在效劳器上聊天了。3、客户端工作流程客户端程序相对简单,只需要建立一个Socket与效劳器端连接,成功后通过这个Socket来发送和接收数据就可以了。功能模块:本系统主要由两个子系统组成:1文件传输系统;2聊天子系统。文件传输系统的功能主要有:1共享文件;2查看并下载文件。聊天子系统的功能有:1注册;2登陆;3添加群;4查找群5私聊;6群聊;7查看好友资料;8查找好友;9添加好友;10创立好友
54、分组。具体如下:基于C/S模式的聊天系统通信聊天文件传输注册登陆私聊群聊查看好友资料查找好友添加好友查找群添加群创立好友分组共享文件查看共享文件并下载5.2具体设计 5.2.1用户注册模块的实现 本界面要填写的工程包括:用户名、密码、昵称、邮箱等信息。用户第一次进入聊天系统时需要进行用户注册才能登陆进行聊天。注册流程如下:用户提出注册请求,客户端响应,弹出注册信息对话框,用户输入相关信息并提交,客户端首先进行合法检查,确定无误后将数据信息发送给效劳器端。效劳器接收到请求后,启动单独的线程进行处理,首先进行合法性检查,确认登录名与系统中已注册得用户登陆名不相同后更新数据,并返回信息,客服端进行显
55、示。注册流程图如下: 注册界面如下列图5-1所示。 图5-1聊天系统注册界面核心代码如下: 首先启动效劳器端package wechat.server.start;import java.io.IOException;import .ServerSocket;import .Socket;public class ServerStart public static void main(String args) try ServerSocket acceptserversocket = new ServerSocket(8888);ServerSocket sendserversocket =
56、new ServerSocket(7777);System.out.println(效劳器已启动.);while(true)Socket acceptsocket = acceptserversocket.accept();Socket sendsocket = sendserversocket.accept();ServerThread st = new ServerThread(acceptsocket,sendsocket);Thread thread = new Thread(st);thread.start(); catch (IOException e) e.printStackT
57、race();注册代码:package wechat.client.frame;import javax.swing.JPanel;import javax.swing.JFrame;import javax.swing.JButton;import java.awt.Rectangle;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import .Socket;import java.util.Scanner;import
58、 javax.swing.JLabel;import javax.swing.JTextField;import wechat.entities.UserInfo;public class LoginRegisterFrame extends JFrame private static final long serialVersionUID = 1L;private JPanel LoginResigerPanel = null;private JButton loginButton = null;private JButton resigerButton = null;private JLa
59、bel userLabel = null;private JLabel passwordLabel = null;private JLabel promptLabel = null;private JTextField userTextField = null;private JTextField passwordTextField = null; private UserInfo userinfo = null;private Socket socketaccept;private Socket socketsend;private int xLocation = 200; /坐标 xpri
60、vate int yLocation = 200 ; /坐标 ypublic int getXLocation() return xLocation;public void setXLocation(int location) xLocation = location;public int getYLocation() return yLocation;public void setYLocation(int location) yLocation = location;public LoginRegisterFrame() super();initialize();public LoginR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国稀土磁钢行业运营状况与发展潜力分析报告
- 2025-2030年中国祛斑养颜保健品行业运行状况及前景趋势分析报告
- 2025-2030年中国电脑电源市场运行动态与营销策略研究报告
- 2025-2030年中国电子驻车制动器EPB市场运营状况与发展潜力分析报告
- 邢台学院《工程结构抗震设计原理》2023-2024学年第二学期期末试卷
- 湖北民族大学《数据库原理及应用》2023-2024学年第二学期期末试卷
- 云南师范大学《电力系统分析》2023-2024学年第二学期期末试卷
- 武汉科技职业学院《动物试验设计与统计分析》2023-2024学年第二学期期末试卷
- 四川艺术职业学院《针灸学(实验)》2023-2024学年第二学期期末试卷
- 西安明德理工学院《产品包装摄影》2023-2024学年第二学期期末试卷
- 2025年房屋交易代持策划协议书
- 课题申报参考:“四新”建设背景下教育创新与课程数字化实践研究
- 2025年上半年赣州市于都县招聘城管协管员易考易错模拟试题(共500题)试卷后附参考答案
- 2025年烟台汽车工程职业学院高职单招职业适应性测试近5年常考版参考题库含答案解析
- 2025年江苏农牧科技职业学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2024年广东省《辅警招聘考试必刷500题》考试题库及答案【易错题】
- 中考数学总复习第一章第3课时二次根式课件
- 天然气脱硫完整版本
- 2024年世界职业院校技能大赛高职组“市政管线(道)数字化施工组”赛项考试题库
- 译林版五下英语1-3单元电子稿
- 节后复工安全温馨提示
评论
0/150
提交评论