李波 杨雪飞
摘 要:该文采用了具有面向对象特点的Java语言来进行程序设计,提出了即时通讯服务器整体架的构概念并且对即时通讯系统的功能及服务进行了全面的分析。该系统软件分别设计了客户端以及服务器端,客户端可以实现对基本的文字消息和相关文件进行交流和传递,这在保障了网络安全的基础上也相对提高了效率。服务器端实现了对在线用户的管理和维护功能,性能比较稳定且简单实用。系统软件设计并实现了用户注册,登陆,用户即时聊天,文件传输,聊天记录管理,时钟及文件传输记录等相关功能。
关键词:即时通讯 Java Eclipse 客户端 服务器端
中图分类号:TP311.52 文献标识码:A 文章编号:1672-3791(2015)07(a)-0018-03
随着飞速发展的移动互联网,IM软件已经成为目前软件中用户使用频率最高,并且用户粘度最高的软件之一,越来越多的人利用网上的资源来享受不断完善且发展的网络服务,网络技术也被越来越多的应用于人们生活的各个领域,而如何更有效的处理用户的请求,服务器如何更加易于维护和更新就成了比较重要的问题。该项目该论文主要特征是动态的、实时的完成信息的读取、发送,利用流来实现信息的交换,并且具有高效的交互性,能够较好的满足了运行环境的需求和用户的要求。
近年来,随着计算机硬件技术的发展,硬件方面的制约越来越小,并且伴随着不断推出的心得通信技术,和不断改进的网络条件,集成多个功能的IM软件,已经使得越来越多的用户感受到了网络的便利。同时即时通讯软件也具有较低的成本,一系列的便利性也促使人们对这个领域更加深入的探索,这对于加强信息交流沟通的质量和效率都具有较为重要的作用[1]。
1 系统功能简介
1.1 客户端
(1)用户注册功能,使用户进行账号注册并完成相关信息的填写。
(2)用户登录功能,保证用户能够安全的登录软件,进入聊天界面。
(3)聊天功能,实现在线用户和用户之间两人或多人的在线沟通交流。
(4)文件传输,在线用户两两之间可进行文件的相互传输。
(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);
getContentPane().add(btnNewButton); //关闭按钮功能
发送按钮功能:在用户点击的时候,会获取当前输入框的内容,并检查选择的对象,将内容发送出去,如图1所示[3]。
2.2 消息及文件的收发
消息的收发使用了socket编程,简单而言,在客户端用户登陆成功后,服务器端会对客户端进行一个Socket的建立和相应端口的分发,因此,服务器端应用程序只用检测该端口的数据就能够确定是当前用户中的哪一个进行数据的分发,在服务器端得到相对应端口的数据时,根据用户的消息和相对应的处理逻辑进行数据的处理。
其中ServerSocket的工作流程可以描述如下:首先使用ServerSocket方法选取服务器的某个端口进行连接的建立,并且监听该端口。之后建立的对象在ServerSocket指定的端口利用accept的方法对信息进行监听,一直到检测有来自客户端发送的试图连接服务器的请求,accept方法才能由之前一直阻塞的状态改变为通畅状态。同时返回到服务器端使客户端的Socket接口与服务器端的Socket接口进行连接。再来依据服务器中getInputStream、getOutputStream的类型调用方法中的一个或两个来建立与客户端进行交互的输出流和输入流。在这个整个过程中,服务器与客户端是依据一定的协议来进行交互的,直到二者的连接关闭为止。最后服务器或客户端或两个都关闭连接之后服务器才能继续监听来自客户端的下一次连接,如图2所示[4]。
3 通讯软件系统服务器端的设计
作为网络节点的服务器端,其主要作用会存储并处理网络上的大部分数据,该项目中设计的服务器端用来监听来自客户端发送的相关信息,并且进行来自客户端的信息管理,作用类似于网络服务器。
作为服务器端,主要工作内容为:接受客户端的消息,并根据消息类型进行数据的转发和存储,作用非常相似与目前网络体系中的网络服务器。
服务器的作用就是承载各种各样的数据,和软件编写者的处理逻辑,并且同时根据接收到的消息类型的不同,跳转至不同的处理逻辑,进行数据的梳理。同时转发数据,处理数据,存储记录,打印日志。
该即时通讯软件系统首先必须开启服务器端进行不断的监听并即时反馈,当客户端用户上线并交流,服务器日志会记录相关通话内容和时钟显示,当用户之间发送文件,同样会显示文件大小以及保存位置等相关信息,如图3所示[5]。
4 测试过程及结果
该IM软件系统进行代码部分的编写工作完成后,需要进行一些列的测试工作,不仅要测试系统各个方面的执行准确性,还要测试高效性和交互性等很多“软实力”。
该即时通讯系统通过Java语言在Eclipse平台上实现。测试结果如下:
(1) 服务器端能够正确并且顺利的启动,并且能够监听客户端的行为。
(2) 客户端界面能够实现。完成用户的注册功能,使用户能够输入昵称、密码及再次确认密码。
(3)客户端能够完成用户的登录,并且检测输入的用户名和密码是否匹配,以及该用户名是否存在于当前系统中,如果密码错误,则提示错误信息,并且提示用户再次输入。
(4) 客户端文件传输功能实现。双击选择用户进行文件的传输,接收方可选择接收或不接收,之后可选择存储位置,同时有进度条显示进程。
(5) 客户端私聊及群聊功能实现。用户可选择一个或多个用户进行沟通交流。
(6) 客户端字体及大小的设置。用户可以调整字形及字体的大小
(7) 服务器端日志记录用户相关操作。从开始服务器启动,到用户上线提示,再到聊天记录以及文件传输记录均能够显示在日志当中,方便查阅。
5 结语
目前来讲,其实即时通讯软件在生活中已经较为常见,但从一定程度上来讲,许多都是侧重于娱乐功能的开发,用于实现单一通讯以及传输文件信息的软件较为缺少。在点对点交流的同时,摆脱了对远程服务器的依赖,避免浪费过的网络资源,具有较好的实用性。在此次即时通讯软件系统的设计过程中,详细阐述了一个即时通讯软件模型的设计思路,并对各个模块概念及功能及技术分别进行了分析,最终完成了一个相对成熟的设计方案。
参考文献
[1] 冯博,应群.面向对象的Java网络编程[M].北京:清华大学出版社,2003.
[2] 印旻.Java语言与面向对象程序设计[M].北京:清华大学出版社,2000:256-230.
[3] Bruce Eckel著.陈昊鹏译.Java编程思想[M].北京:人民邮电出版社,2004.
[4] 吴越胜,李新磊,等.Eclipse 3.0程序开发技术详解[M].北京:清华大学出版社,2010.
[5] 翟高粤,基于Java语言Socket C/S通信的实现方法[J].甘肃科技纵横,2005(6):28-29,202.