(完整版)基于Java即时聊天系统的设计与实现毕业论文设计 联系客服

发布时间 : 星期六 文章(完整版)基于Java即时聊天系统的设计与实现毕业论文设计更新完毕开始阅读7850c92c5bcfa1c7aa00b52acfc789eb172d9e23

可能进行一次性的业务处理,达到优化整体设计的目的。 4.1即时聊天系统的实施原理 4.1.1 工作方式和技术原理

典型的IM工作方式如下:登陆CHAT通讯服务器,获取一个自建立的历史的交流对象列表(同事列表),然后自身标志为在线状态,当好友列表中的某人在任何时候登录上线并试图通过你的计算机联系你时,IM系统会发一个消息提醒你,然后你能与他建立一个聊天会话通道进行各种消息如键入文字、通过语音等的交流,从技术上来说,聊天系统的基本技术原理如下:

第一步,用户A输入自己的用户名和密码登录IM服务器,服务器通过读取用户数据库来验证用户身份,如果验证通过,登记用户A的IP地址、IM客户端软件的版本号及使用的TCPUDP端口号,然后返回用户A登录成功的标志,此时用户A在IM系统中的状态为在线(Online Presence)。

第二步,根据用户A存储在IM服务器上的好友列表(Buddy List),服务器将用户A在线的相关信息发送给也同时在线的IM好友的PC机,这些信息包括在线状态、IP地址、IM客户端使用的TCP端口(Port)号等,IM好友的客户端收到此信息后将在予以提示。

第三步是IM服务器把用户A存储在服务器上的好友列表及相关信息回送到他的客户端机,这些信息包括也在线状态、IP地址、IM客户端使用的TCP端口(Port)号等信息,用户A的IM客户端收到后将显示这些好友列表及其在线状态。 4.1.2 通讯方式

(1)在线直接通讯

如果用户A想与他的在线好友用户B聊天,他将直接通过服务器

发送过来的用户B的IP地址、TCP端口号等信息,直接向用户B的PC机发出聊天信息,用户B的IM客户端软件收到后显示在屏幕上,然后用户B再直接回复到用户A的PC机,这样双方的即时文字消息就不再IM服务器中转,而是直接通过网络进行点对点的通讯,即对等通

【5】讯方式(Peer To Peer)。

(2)在线代理通讯

用户A与用户B的点对点通讯由于防火墙、网络速度等原因难以建立或者速度很慢,IM服务器将会主动提供消息中转服务,即用户A和用户B的即时消息全部先发送到IM服务器,再由服务器转发给对方。 4.2软件设计流程

因为该系统其需求是十分明确的,所以该系统的开发流程采用瀑布模型进行设计,分为几大步骤:先进行需求分析,再是系统设计,然后

【6】是详细设计与编码,其次是软件的测试,最后是软件的运行和维护。

在实际过程中这些步骤经常是重叠和彼此间有信息交换,它不是一个简单线性过程,而是包括开发步骤的多个反复。如图2所示。

图2 即时通讯系统开发流程图

4.3功能模块划分

该即时聊天工具按如下过程完成通信:

(1)客户向服务器注册,告知服务器该客户监听某主题; (2)客户注册之后,向服务器发送消息;

(3)服务器再把消息发送给所有监听此主题的客户。 根据以上描述,该系统功能模块图请见图3。

图3 通讯系统的功能模块

4.3.1 服务器端

由图3可知服务器端完成至少3大功能:建立连接、存储数据和监

听客户。这3大功能的具体含义如下:

(1)建立一个ServerSocket连接,不断侦听是否有客户端连接或者断开连接。

(2)服务器端是一个信息发送中心,所有客户端的信息都传到服务器端,再由服务器根据要求分发出去。

(3)数据库数据操作包括将用户信息存储到数据库等。 4.3.2 客户端

客户端要完成4大功能:新建立用户、用户登录、通信交流。这些功能的含义如下:

(1)新建立用户:客户端与服务器端建立通信信道,向服务器端发送新建用户的信息,接收来自服务器的信息进行注册。

(2)用户登录:客户端与服务器端建立通信信道,向服务器端发送信息,完成用户登录。

(3)通信交流:客户端可完成的信息的编辑、发送和接收等功能。 4.4 数据库概要设计

因为本系统采用的是2级CS结构模式,所以,为了减少服务器的存储量,方便程序设计,本系统只对用户信息进行存储。利用JAVA中的hibernate框架技术进行存储。在Hibernate中,各表的映射文件?. newMessage。其中,static是关键字,表示静态变量,Boolean表示变量类型为布尔型,变量名为newMessage。这条语句的意思是定义一个静态变量newMessage,它的类型为布尔型。值得强调的是布尔型数据只有两个值true和false,并且它们不对应人数整数值。

if(start) {

sFrame.txtStatus.setText(\已启动...\

log(null,\服务器已启动..\

}else { }

sFrame.txtStatus.setText(\关闭中...\

这是一条if条件判断语句,它表示变量start如果不为空,那么执行语句第一个大括号中的语句,如果为空,则执行else中的语句。其中,log为输出语句,表示在窗口中输出“服务器已启动”信息。

public void run() {

try {while (start) {

Socket client = serverSocket.accept();

Connection con = new Connection(client, u, v,

userInfo);

}

} catch (IOException e) {

log(e, \不能监听!\

}

}

这个函数的作用是监听用户信息,void表示定义的函数不需要返回值,while是循环语句关键字,在语句中的意思为直到start的值不为空,将循环执行后面括号的语句,直到start值为空后,循环才结束。Connection con表示连接用户信息。Catch是对java中的异常进行捕获,并且能够抛出异常,便于程序能够正常运行。 5.1.2 登录验证模块

系统的登录模块是比较重要的,这是用户的一个身份验证,是通讯系统必须的一个功能模块。如果客户端输入的字符串表方式需要登录,那么服务器在接收到该信息后连接数据库,准备从数据库选择昵称和密