即时通讯软件设计与实现

2018-03-22 12:53王小琼陈得友
魅力中国 2018年40期

王小琼 陈得友

摘要:当前中国的互联网技术已经进入了一个飞速发展的时期,即时通讯成为了网络通信工具的主流。本論文就是模拟QQ聊天软件,开发一个包括文字聊天、文件传输等功能的聊天软件。系统采用C/S架构,基于.NET平台开发。由服务器端和客户端程序组成,采用TCP/IP通信协议,使用XML对通信报文进行封装,便于应用程序API调用,组装,解析XML报文。主要完成文字聊天、文件传输、服务器模块的设计任务。通过运行、测试与分析,该多功能聊天软件运行稳定、可靠,具有一定的实用价值。

关键词:聊天软件;文字聊天;文件传输;C#;XML

一、研究的意义

21世纪是信息的时代,随着互联网技术的发展,信息在传递方面也有了崭新的一面。现今聊天软件成为信息传递最为广泛的应用工具,它发挥了即时性通信的特点,可以让用户在第一时间内得到信息的交流,它不仅可以让用户进行文字聊天,而且还增添语音、视频功能。这样可以让网上的好友身临其境的面对面的聊天,让彼此之间更为深入的了解。人性化的设计让每个用户都可以得心应手的使用,从而获得更多人的青睐。Internet的出现连通了整个世界,而聊天软件的出现则连通了每一位网上的用户。

二、需求分析

此次开发的网络聊天工具可作为企业局域网的交流工具使用,通信的安全性不是很高,但要求信息的响应速度要较快,让用户充分享受到网络即时消息的方便和快捷。本聊天工具由服务器端程序和客户端程序两部分组成,整体采用.NET平台开发,采用TCP/IP通信协议,使用XML对通信报文进行封装,以便于应用程序API调用,组装和解析XML报文。服务器是可以进行监听,记录客户端请求和验证客户端身份的合法性,并提供XML消息中转服务;客户端程序面向实际用户,它有必要的界面的按钮,向用户提供网络即时消息的功能。

三、总体设计

(一)多线程设计

服务器需要和多个客户端同时进行通信,这就是服务器端的多线程。一旦服务器发现一个新的客户端与之建立了连接,就马上新建一个线程与客户端进行通信。用多线程的好处在于可以同时处理多个通信连接,不会出于由于数据排队而发生的延迟或者丢失,可以很好利用系统的性能。

客户端能够完成信息的接收和发送操作,这与服务器的多线程概念不同,可以采用循环等待的方法来实现客户端。利用循环等待的方式,客户端首先接收用户输入的内容并将它们发送到服务器端,然后接收来自服务器端的信息,将其返回给客户端的用户。

(二)数据库的设计

本设计模拟的企业局域网架构,所以数据库表主要用来存放部门信息和用户的注册信息,可利用两张表来分别存放部门信息和用户信息,用户可通过服务器来查看在线用户的个人信息。

(三)服务器的设计

主服务器实现了服务器的多线程,服务器端有一个进程(或多个进程)在指定的端口等待客户的连接信息。一时连接成功,就可以按设计的数据交换方法和格式进行数据传输。客户端只在需要的时候向服务端发出连接请求。

登陆认证服务是对试图登陆的客户端进行权限验证。验证过程为:服务器获得客户端发送来的用户名和密码,然后查询数据库的相应的用户列表,如果该用户不存在或用户名与密码不匹配服务器将验证失败的结果通过XMPP协议发还给客户端,验证过程终止。如果验证通过,登陆验证服务会将表中的用户状态由离线变为在线,然后将验证成功的结果发还给客户端。

(四)客户端的设计

用户完成登录后, 客户端与服务器端建立连接。连接建立成功后,客户向服务器请求读取好友名单;服务器收到该请求,开始从数据库读取好友资料,向客户端发送这些信息;客户收到服务器消息后,在主窗口显示好友。

客户可以在客户端查看好友信息,客户端向服务器发送查询好友信息的请求,然后服务器查询数据库,接着将查询得到的结果组合成XMPP协议的XML流返回给客户端。

(五)文本通信功能设计

一对一:在本设计中文本通信功能采用由服务器中转,考虑到客户在登陆系统时就跟服务器建立了TCP连接,而且在整个系统使用中客户与服务器之间除了一些必要的控制信息及好友查询等信息要进行通信外,TCP连接是处于空闲状态的,所以可以利用服务器中转完成客户间的文本通信。

一对多:此功能用于会议室聊天,具有一个会议室的建立,会议室属性的设定等。一个用户建立会议室后,服务器向所有在线用户发送此会议室的信息,其他用户就可以在主界面看到此会议室的消息, 只要知道此会议室的密码,便能加入此会议室聊天。

(六)文件传输

本设计中,文件传输采用的是P2P通信。P2P通信的特点是通信的双方通信前借助XMPP服务器建立TCP连接,之后双方就进行与服务器无关的点对点通信,直到通信结束。整个过程中,服务器只起了一个辅助与管理作用,真正的数据通信与服务器无关。

四、结论

本论文所设计的即时通讯客户系统,主要功能是能够完成服务器与客户端之间的连接,并完成客户端用户之间的即时通讯,软件主要包括以下几个功能:用户登录和注册管理;好友信息查询;即时文本消息的互相传送(一对一文本传输和一对多文本传输);文件的点对点传输等。

在完成这些功能的同时,本文主要解决了一下几个方面的关键问题:系统采用了传统的客户端、服务器网络组织模式,并且设计了基于中心服务器模式的P2P客户端,在客户端与服务器建立连接完成以后,通讯在用户与好友间直接点到点的连接与通信,从而大大减轻了服务器端得负荷,也保证了可靠的文件传输机制,客户端的设计中还采用服务器连接中转的方案进行文本消息的传送。

参考文献:

[1] 张青,郭亚萍.C#编程思想与实践[M].北京:冶金工业出版社,2005

[2] 陈明.实用软件工程基础[M].北京:清华大学出版社,2002

[3] 黄德志,汤庆恩.C#程序设计实用教程[M].北京:冶金工业出版社,2002

[4] 王敏.C#线程参考手册[M].北京:清华大学出版社,2003

作者简介:王小琼(1981-),女,硕士研究生,研究方向:软件工程。

陈得友(1979-),男(汉族),河南信阳人,大学本科,副教授,主要研究领域为软件技术、高等教育。