课题即时通讯毕业设计.docx
《课题即时通讯毕业设计.docx》由会员分享,可在线阅读,更多相关《课题即时通讯毕业设计.docx(33页珍藏版)》请在冰点文库上搜索。
课题即时通讯毕业设计
毕业设计说明书
企业内部即时通讯系统的设计
与实现
电子与计算机科学技术学院
海南社区
学生姓名:
学号:
学院:
网络工程
专业:
指导教师:
2015年6月
企业内部即时通讯系统的设计与实现
摘要
随着计算机网络应用的逐渐普及,网络已经成为人们掌握信息、交流信息以及管理信息必不可少的重要工具。
实时通信的出现给人们带来了极大的便捷,同时也带来了时间和经济上的节省。
如今,网络即时通信已经逐步发展成为应用于各行各业的信息交流工具。
通过设计和实现一款集即时通信与人事管理于一体的网络应用程序,讨论并分析在TCP/IP协议的基础上设计并实现一个C/S结构的即时通信系统的详细过程。
首先,介绍网络即时通信开发的必备技术知识,包括常用的即时通信系统的客户端和服务器端的通讯协议,以及即时通信系统的功能设计、系统结构模式设计、数据信息设计等。
其次,分析和设计客户端与服务器端之间的通信协议,以规范系统中端与端的数据传输过程。
然后,对系统中最重要的部分即网络传输控制模块,进行详细的设计说明以及简单的实现方案的阐述。
最后,描述即时通信系统整体的逻辑处理流程,以及该系统在人事管理方面的功能实现,以及其他部分已通过测试服务器程序测试的客户端程序代码。
即时通信系统的设计与实现在企业建立自己特色的集信息管理和即时通信为一体的内部应用软件方面具有一定的应用前景。
关键词:
即时通信,网络应用程序,TCP/IP,通信与办公系统
DesignandImplementationofEnterpriseInstant
MessagingSystem
Abstract
Asthewidespreadofwebapplication,internethasbecometheindispensabletoolforinformationacquisition,communicationandmanagement.Theadventofreal-timecommunicationhasbroughtpeoplegreatconvenienceaswellassavingtimeandmoney.Nowadays,web-basedreal-timecommunicationhasbeendevelopedtoacommunicationtoolformanyfields.
Analyzesanddiscusstheprocessofdesigningandimplementingareal-timecommunicationsystemofC/SstructurebasedonTIP/IPprotocol,throughdesigningandimplementinganetworkapplicationcombinedthefunctionsofinstantcommunicationtoolandalsoapersonnelmanagementtool.First,tointroducesomenecessarytechnicalknowledgeandthefunctionaldesigning、systemstructuremoduledesigninganddatainformationdesigningofdevelopmentoftheIMsystem.Second,analyzeanddesignthecommunicationprotocolbetweenClientandServerofthesystemtoregularthedatatransportationprocessbetweenports.Third,describethedesigningandimplementationofthemostimportantpartofthesystemwhichisthewebtransportationcontrollingmodule.Finally,introducethelogicprocessingofthewholeIMsystemandsomeclientprogramsorcodewhichhavepassedthetestingofserverprogram.
DesigningandimplementingofIMsystemhasadefiniteapplyingprospectintheaspectofbuildinganinteriorandownapplicationwhichgatherinstantmessagingandinformationmanaging.
Keywords:
InstantMessaging,NetworkApplication,TCP/IP,IMinOffice
1引言
1.1课题的背景与意义
随着计算机网络的发展,人类的通信方式也发生了翻天覆地的变化。
网络通信早已取代传统的纸质信件,电话网络的地位也在这个年代受到了来自计算机网络的挑战。
总之,网络通信在我们的生活和企业中可以说已经必不可少,企业内部即时通讯就是其中的重要组成部分[1]。
目前,中国市场上的企业级即时通信工具主要包括:
易睦网络的imo云办公室、叮当旺业通、Anychat、网络飞鸽、汇讯WiseUC、大蚂蚁Bigant、上海盈硕的蚁傲、腾讯RTX、FastMsg、263EM、IBM的LotusSametime、点击科技的GKE、中国移动的企业飞信、华夏易联的e-Link、网络飞鸽QuickDove等[2]。
相对于个人即时通信工具而言,企业级即时通讯工具更加强调安全性、实用性、稳定性和扩展性,同时更可根据应用的实际能按需定制,随着企业信息化进程的不断演进,企业即时通讯在企业中的应用将越来越广泛。
企业内部即时通讯系统是企业员工在工作时经常要与其他同事进行协同工作和跨部门合作,全方位地利用有限资源协同完成更多工作,因此各部门同事间需要进行即时的沟通。
采用JMS(JavaMessageService)技术实现企业内部的即时通讯系统。
使该系统为使用者提供即时消息、网络会议、文件传输、系统公告等功能,可实现使用者与各部门同事间协同办公的要求,满足企业内部进行更加高效沟通的需求,为企业提供一种公共的、可靠的内部沟通方式。
企业内部即时通讯系统的好处:
(1)提高工作效率:
在与公司客户与同事沟通时能够达到提高工作效率。
(2)快速解决沟通问题。
(3)可以迅速知道对方是否在线。
(4)与邮件、移动短信结合更是威力无穷。
当适合公司的即时通讯系统广泛应用于工作后,交流渠道便于扁平化管理,业务上的平等交流;因为是书面交流,有利于理清头绪,明晰表达;而且,办公室人与人之间的关系变得更加真诚和紧密。
所以纵上所述,如果企业要用即时通信,最好用专用的企业即时通讯系统,而最好不要用个人即时通讯[3-5]。
1.2相关技术知识简介
1.2.1基于SOCKET的网络编程
SOCKET在英文中的意思是插座,在网络编程中,其实际意义可以理解为网络通信连接的插座,通常称之为套接字。
如果将网络连接的各终端类比为电话,则SOCKET即相当于电话线插座,为各终端提供或创建与其他终端通信连接的桥梁或通道。
所有的终端都必须接通此“插座”来完成与其他终端的连接或通信,否则,它将独立于网络之外[6]。
由此可以知道知道,SOCKET是终端间建立连接的核心对象。
那么,对于一个SOCKET对象,它到底具备什么样的功能呢?
通常,用WINSOCK库来创建和使用SOCKET,运用WINSOCK库的基本API,就可以实现简单的数据输入和输出(即发送数据和接受数据)。
在创建一个SOCKET对象后,通过指定IP位置来确定该SOCKET与哪台机器发生交流,通过指定机器端口号(一般为1024以上)确定与该机器上哪个应用程序进行交流。
在确定了交流对象后,便可以使用SOCKET与对象机器上的应用程序进行数据的传输和信息的交流。
在面向连接的网络通信中,还必须使用SOCKET进行连接的监听和创建,只有创建了稳定的连接后,才开始进行数据的传输[7]。
由于交互方式的不同,SOCKET也分为两种,一种是无连接的数据报形式的,一种则是面向连接的流式套接字,这也是接下来两小节要阐述的内容[8]。
1.2.2UDP协议与TCP协议的简单介绍
UDP协议是一个简单的面向数据报的运输层协议:
进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。
这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么了解[9]。
UDP不提供可靠性:
它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地,其过程可以比做投递信件,它只关心信件确实投放到信箱,至于对方是否正确、按时收到信件,UDP并不关心[10]。
尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。
TCP提供一种面向连接的、可靠的字节流服务[11]。
面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。
这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁并与之开始对话
[12]。
1.2.3WINSOCK套接字API调用的简单流程
本论文所要讨论的即时通信系统则是通过WINSOCK库的应用来设计和实现基于TCP的C/S结构的网络即时通信程序。
这里,用图的方式简单的表示出对WINSOCK库提供的API函数调用过程[13]。
2系统的相关分析与总体设计
2.1设计目标
本系统主要是为中小型企业内部使用的带有简单人事管理功能的局域网即时通信系统,由于要存储并管理用户相关信息的数据,同时要限制普通用户对数据信息的管理权限,比较合适的设计是采用C/S模式的系统架构,数据由数据库进行存储,由服务器对数据库进行直接操作,而客户端则通过对服务器发出请求得到相应的数据或者告知服务器对数据库进行何种操作[14]。
2.2需求分析
2.2.1功能性需求分析
本系统这实现了企业内部网络聊天工具所具备的基本功能,即注册、登录、查找好友,添加好友、更改个人资料、查看好友资料、添加删除分组、各分组之间转移好友、发送消息、接收消息、接收系统消息等,还添加了一些特色功能,如隐身,头像的变化,系统管理员可以向每个客户端发送系统消息,上线下线在好友客户端都有提示,密码丢失可以通过密码找回功能通过设置的密保问题找回密码,并可以判断密码的安全等级等。
本系统实现了一个与TencentQQ相似的友好操作界面,简单,易用,适合用户的操作习惯[15]。
谢谢海南社区支持:
该系统具备了网络聊天工具所具备的基本功能,系统或许存在一些未知的Bug,还需要进一步的改进和测试。
在以后的研究中,我们还会研究安全通信协议,保障通信的安全,提高系统的实用性等[16]。
2.2.2系统用例分析
(1)系统普通用户用例分析
(2)系统管理员用例分析
2.3概要设计原则
企业内部即时通讯系统总体设计目的是加强对需求分析阶段的功能性需求和非功能性需求的综合考虑和理解,系统建设中我们将采用基于C/S模式构建。
这些技术的应用实现系统应用的安全、稳定及扩展要求以及开放的跨平台能力和兼容性[17]。
实现了操作界面、应用逻辑、业务数据相对独立,使本系统的实施更加方便、灵活、易于扩展
[18]。
为了进一步的规划详细的系统解决方案做准备,本系统在设计过程中注重考虑了以下几个特性:
(1)实用性
本系统的现实需求就是针对企业内部工作交流不便,浪费时间,数据传送效率低等特点,希望提出一个实用的能满足系统的功能要求和实际应用的需要的企业内部即时通讯系统。
所以尽量选择成熟实用的技术,使得整个系统有一个安全、稳定的运行环境[19]。
(2)可扩展性
为使系统能有良好的兼容性和可扩展性,系统在设计时充分考虑了数据库设计容量与处理能力等方面的扩充与升级的可能,不仅充分保护了原有投资,还保证了以后系统功能升级的方便[20]。
(3)安全性
系统对数据的完整性和安全性具有很高的要求。
为了保障系统平稳正常的运行,整个系统必须具有很高的安全可靠性,因此,在企业内部即时通讯系统应充分利用数据库的维护工具,便于数据备份、恢复,从而提高系统的安全性[21]。
(4)可维护性
企业内部即时通讯系统的设计要本着“简单易用”的原则,方便用户的使用。
对于用户来说,只要掌握基本的计算机操作,便可完成整个操作对于管理员来说,设计时以可维护性为主,做到故障易于排除,日常管理操作简便[22]。
(5)完整性
系统的完整性,涉及到友好的用户界面,高效的信息处理,安全可靠的数据管理,以及优化的网络设计[23]。
2.4系统安全与分析设计
由于本系统的的安全界面中,分为:
“安全概述”,“常见欺诈”,“修改密码”,“修改密保”;
(1)安全概述分析设计:
主要是描述飞狐2013系统当前帐号的安全状况
if(设置密保并且密码等级为良好以上)
{
安全状况良好请继续保持良好的习惯
可立即完成设置密码
}
elseif(设置密保并且密码等级为中等以下)
{
安全状况存在隐患请定期修改密码
立即完成设置密码
}
else
{
安全状况危险请立刻设置密保问题
立即完成设置密保
}
(2)常见欺诈
常见的集中欺诈方式:
钓鱼网址,视频欺诈,中奖欺诈,冒充好友欺诈;
(3)修改密码
修改密码之前请确保设置密保;如果没有设置密保问题,请先设置密保问题,以确保该账户的安全性。
如果设置了密保问题,请先输入原密保问题,核对用户身份。
密保正确才可以修改,如果错误,则不能修改密码。
(4)修改密保
如果没有设置密保问题,设置密保问题。
如果设置了密保问题,请先输入原密保问题,核对用户身份。
密保正确才可以修改,如果错误,则不能修改密保。
2.5数据库结构设计
本系统数据库采用mysql5.6,系统主要需要维护3张数据表:
名称
登录信息
描述
用户登录时的账号密码检测
来源
用户
去处
服务器用户表
组成
ID+密码
表2.1登录信息表
表2.2好友信息表
名称
取值类型
长度
昵称
Char
8
ID
Int
6到8位
密码
Char
6-16
问题NO
Int
1-2
问题答案
Char
20
登录状态
Int
1
年龄
Smallint
0-99
地区
Char
20
性别
Char
2
签名
Char
100
说明
Char
255
问题详细
Char
20
好友ID
Int
6-8
好友类型
Int
1
好友分组
Int
1
备注
char
10
好友类型详细
Char
6
好友分组详细
Char
10
日期
Date
内容
Char
255
表2.3注册信息
名称
注册信息
描述
注册新账号
来源
用户
去处
服务器用户表
组成
密码+个人资料
表2.4机位信息表
名称
聊天信息
描述
用户聊天时发送信息
来源
用户
去处
聊天记录表
组成
发送方IP+接收方IP+消息内容
2.6系统开发环境和运行环境
2.6.1系统的开发环境
本系统开发平台选择考虑到以下几个方面的因素:
硬件环境、数据的安全性以及技术支持等等。
因此选择操作系统:
Windows7、WindowsXP;开发工具:
Eclipse;数据库:
MySQL6.0;开发语言:
Java。
2.6.2系统的运行环境
本系统由两部分组成:
置于个用户PC机上的飞狐2013客户端,以及置于实验室高性能服务器上的数据库服务器。
根据调研得知客户端的计算机配置Pentum4级别以上,服务器PC应配备更高的配置,在Windowsxp环境下运行。
3系统详细设计与实现
3.1系统登录界面
系统用户登录时,先打开登录页面,然后填写用户和密码信息,并选择状态,点确定后连接数据库,检验用户名密码是否正确,正确则进入到系统主界面。
不正确则提示输入的密码有误,请重新输入。
图3.2软件登录界面
核心代码:
privatevoidjb_loginactionPerformed(ActionEvente)throwsUnknownHostException,IOException,InterruptedException
{
if(jt_user.getText().equals(""))
{
JOptionPane.showMessageDialog(null,"请输入账号后再登陆","提示",JOptionPane.INFORMATION_MESSAGE);
}
elseif(jt_user.getText().length()<6||jt_user.getText().length()>20)
{
JOptionPane.showMessageDialog(null,"请输入正确的账号,账号可以位数字或Email位置。
","提示",JOptionPane.INFORMATION_MESSAGE);
}
elseif(jp_password.getText().equals(""))
{
JOptionPane.showMessageDialog(null,"请输入密码后再登陆","提示",JOptionPane.INFORMATION_MESSAGE);
}
else
{
login_messagelmessage=newlogin_message(jt_user.getText(),jp_password.getText(),0,0,0,0,jco_status.getSelectedIndex()+1);
MainInterfacemain=newMainInterface(lmessage);
this.dispose();
}
}
privatevoidjb_loginactionPerformed(KeyEvente)throwsUnknownHostException,IOException,InterruptedException
{
if(jt_user.getText().equals(""))
{
JOptionPane.showMessageDialog(null,"请输入账号后再登陆","提示",JOptionPane.INFORMATION_MESSAGE);
}
elseif(jt_user.getText().length()<6||jt_user.getText().length()>20)
{
JOptionPane.showMessageDialog(null,"请输入正确的账号,账号可以位数字或Email位置。
","提示",JOptionPane.INFORMATION_MESSAGE);
}
elseif(jp_password.getText().equals(""))
{
JOptionPane.showMessageDialog(null,"请输入密码后再登陆","提示",JOptionPane.INFORMATION_MESSAGE);
}
else
{
login_messagelmessage=newlogin_message(jt_user.getText(),jp_password.getText(),0,0,0,0,jco_status.getSelectedIndex()+1);
MainInterfacemain=newMainInterface(lmessage);
this.dispose();
}
}
冯武宝海南社区.hainanhiaaa/
3.2系统主界面
图3.3系统主界面
核心代码:
classloginFounctionextendsThread
{
publicvoidrun()
{
try
{
login_messagelm=newlogin_message(lmessage.qq,lmessage.password,sys_port,main_port,alive_port,transmit_port,lmessage.status);
loginClientThreadloginThread=newloginClientThread(lm);
loginThread.join(30000);
if(loginThread.changed==1)
{
sendHeartbeatThread_main_temp.start();
load();
changed=1;
}
elseif(loginThread.changed==2)//当账号和密码不匹配时
{
JOptionPane.showMessageDialog(null,"您的账号和密码不匹配!
","提示",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
else
//当登录超时的情况
{
JOptionPane.showMessageDialog(null,"系统繁忙,请稍后再试!
","提示",JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
catch(Exceptione)
}
}
classreceiveMainInfoThreadextendsThread
{
ServerSocketserver;
Socketclient;
publicreceiveMainInfoThread()
{
server=getAvailableServerSocketFunction.getServerSocket(main_port);
main_port=server.getLocalPort();
}
}
3.3系统聊天通讯界面
图3.4聊天通讯界面
核心代码:
publicvoidactionPe