内容发布更新时间 : 2024/11/14 14:35:32星期一 下面是文章的全部内容请认真阅读。
龙源期刊网 http://www.qikan.com.cn
一种基于Java的IM即时通讯软件的设计与实现
作者:李波 杨雪飞
来源:《科技资讯》2015年第19期
摘 要:该文采用了具有面向对象特点的Java语言来进行程序设计,提出了即时通讯服务器整体架的构概念并且对即时通讯系统的功能及服务进行了全面的分析。该系统软件分别设计了客户端以及服务器端,客户端可以实现对基本的文字消息和相关文件进行交流和传递,这在保障了网络安全的基础上也相对提高了效率。服务器端实现了对在线用户的管理和维护功能,性能比较稳定且简单实用。系统软件设计并实现了用户注册,登陆,用户即时聊天,文件传输,聊天记录管理,时钟及文件传输记录等相关功能。 关键词:即时通讯 Java Eclipse 客户端 服务器端
中图分类号:TP311.52 文献标识码:A 文章编号:1672-3791(2015)07(a)-0018-03 随着飞速发展的移动互联网,IM软件已经成为目前软件中用户使用频率最高,并且用户粘度最高的软件之一,越来越多的人利用网上的资源来享受不断完善且发展的网络服务,网络技术也被越来越多的应用于人们生活的各个领域,而如何更有效的处理用户的请求,服务器如何更加易于维护和更新就成了比较重要的问题。该项目该论文主要特征是动态的、实时的完成信息的读取、发送,利用流来实现信息的交换,并且具有高效的交互性,能够较好的满足了运行环境的需求和用户的要求。
近年来,随着计算机硬件技术的发展,硬件方面的制约越来越小,并且伴随着不断推出的心得通信技术,和不断改进的网络条件,集成多个功能的IM软件,已经使得越来越多的用户感受到了网络的便利。同时即时通讯软件也具有较低的成本,一系列的便利性也促使人们对这个领域更加深入的探索,这对于加强信息交流沟通的质量和效率都具有较为重要的作用[1]。 1 系统功能简介 1.1 客户端
(1)用户注册功能,使用户进行账号注册并完成相关信息的填写。 (2)用户登录功能,保证用户能够安全的登录软件,进入聊天界面。 (3)聊天功能,实现在线用户和用户之间两人或多人的在线沟通交流。 (4)文件传输,在线用户两两之间可进行文件的相互传输。
龙源期刊网 http://www.qikan.com.cn
(5)聊天记录功能,实现当前用户能够查阅已保存的聊天内容。 1.2 服务器端
(1)对用户登录信息进行管理,并且进行保存,以供后续查询和处理。 (2)能够向所有用户发送系统消息。
(3)保存并显示用户之间的通话记录内容以及文件传输记录,将该信息储存在文件中,能够满足后续的查询,并且在控制台将其输出,能够完成实时的信息预览[2]。 2 通讯软件系统客户端的设计 2.1 图形界面的设计实现
该IM软件采用C/S的工作模式,客户端能够实现图像界面的展示,方便用户之间交流和更多的逻辑交互。以下为图形界面实现相关类及方法的说明:
(1) setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
应用Border类来进行边框的宽度及高度设置,以便用户输入昵称及密码。登陆界面方面CellRenderer:JList里的一个元素,当选择和未选择的时候,会有不同的背景色样式。 UUListModel类继承自AbstractListModel,实现了父类的抽象方法,可以作为JList的数据模型。
(2)public Chatroom(String u_name, Socket client) { name=u_name; clientSocket=client; onlines=newVector();
其中CatChatroom类继承自Jframe,用户聊天窗口的界面。由公共聊天区域,个人打字区域,发送文件区域,开始按钮,关闭按钮,在线用户列表,发送文件区域等部分组成。它绑定了客户端socket对象,可以实现向服务器端发送各种类型的消息的功能。 (3)final JButton btnNewButton=new JButton(\\u5173\u95ED\); btnNewButton.setBounds(214,448,60,30);
龙源期刊网 http://www.qikan.com.cn
getContentPane().add(btnNewButton); //关闭按钮功能
发送按钮功能:在用户点击的时候,会获取当前输入框的内容,并检查选择的对象,将内容发送出去,如图1所示[3]。 2.2 消息及文件的收发
消息的收发使用了socket编程,简单而言,在客户端用户登陆成功后,服务器端会对客户端进行一个Socket的建立和相应端口的分发,因此,服务器端应用程序只用检测该端口的数据就能够确定是当前用户中的哪一个进行数据的分发,在服务器端得到相对应端口的数据时,根据用户的消息和相对应的处理逻辑进行数据的处理。
其中ServerSocket的工作流程可以描述如下:首先使用ServerSocket方法选取服务器的某个端口进行连接的建立,并且监听该端口。之后建立的对象在ServerSocket指定的端口利用accept的方法对信息进行监听,一直到检测有来自客户端发送的试图连接服务器的请求,accept方法才能由之前一直阻塞的状态改变为通畅状态。同时返回到服务器端使客户端的Socket接口与服务器端的Socket接口进行连接。再来依据服务器中getInputStream、
getOutputStream的类型调用方法中的一个或两个来建立与客户端进行交互的输出流和输入流。在这个整个过程中,服务器与客户端是依据一定的协议来进行交互的,直到二者的连接关闭为止。最后服务器或客户端或两个都关闭连接之后服务器才能继续监听来自客户端的下一次连接,如图2所示[4]。
3 通讯软件系统服务器端的设计
作为网络节点的服务器端,其主要作用会存储并处理网络上的大部分数据,该项目中设计的服务器端用来监听来自客户端发送的相关信息,并且进行来自客户端的信息管理,作用类似于网络服务器。
作为服务器端,主要工作内容为:接受客户端的消息,并根据消息类型进行数据的转发和存储,作用非常相似与目前网络体系中的网络服务器。
服务器的作用就是承载各种各样的数据,和软件编写者的处理逻辑,并且同时根据接收到的消息类型的不同,跳转至不同的处理逻辑,进行数据的梳理。同时转发数据,处理数据,存储记录,打印日志。
该即时通讯软件系统首先必须开启服务器端进行不断的监听并即时反馈,当客户端用户上线并交流,服务器日志会记录相关通话内容和时钟显示,当用户之间发送文件,同样会显示文件大小以及保存位置等相关信息,如图3所示[5]。 4 测试过程及结果