即时通信方法及系统

本发明涉及通信技术领域,尤其涉及一种即时通信方法及系统。
背景技术
由于可扩展通讯和表示协议(Extensible Messaging and Presence Protocol,简
称 XMPP) 的扩展性和灵活性较好,因此, XMPP 协议成为当前的即时通信主要采用的协议。
XMPP 支持 SOCKS5 字节流传输,现有技术中,一般通过 SOCKS5 传输文件,SOCKS5 是一个代理协议,文件传输具体过程为 :源客户端与 SOCKS5 代理服务器建立连接,连接建立后源客户端向代理服务器发送代理请求消息,代理服务器确定能够进行代理时向源客户端
发送代理响应消息,源客户端则可以将文件发送给代理服务器,由代理服务器将字节流格
式的文件转发给目的客户端,而 SOCKS5 代理服务器直接发送待发送文件的字节流,未对待
发送文件进行安全处理,因此,不能保证文件传输过程中文件的安全性。
发明内容
本发明提供一种即时通信方法及系统,以解决现有技术中传输文件时不能保证文
件传输过程中文件的安全性的问题。
本发明的第一个方面提供一种即时通信方法,包括 :
源客户端对获取的待发送文件进行编码,并对编码后的待发送文件进行加密,获
得加密后的待发送文件 ;
所述源客户端向服务器发送文件传输请求消息,所述文件传输请求消息包含所述
源客户端的标识信息、所述加密后的待发送文件以及对所述待发送文件进行加密的加密秘
钥 ;
所述服务器向目的客户端发送所述文件传输请求消息 ;
所述目的客户端接收所述服务器发送的所述文件传输请求消息 ;
所述目的客户端对所述文件传输请求消息进行解析,获得所述源客户端的标识信
息、所述加密后的待发送文件以及所述加密秘钥 ;
所述目的客户端采用所述加密秘钥对所述加密后的待发送文件进行解密,获得解
密后的待发送文件,并对所述解密后的待发送文件进行解码,获得所述待发送文件。
在上述即时通信方法的一个实施例中,在所述源客户端对获取的待发送文件进行
编码之前,还包括 :
所述源客户端向所述服务器发送连接请求消息,所述连接请求消息包含所述源客
户端的标识信息 ;
所述服务器接收所述连接请求消息,并经判断获知线程池中存在空闲线程,则为
所述源客户端分配一个空闲线程,并通过所述服务器分配的空闲线程建立与所述源客户端
的连接。
在上述即时通信方法的一个实施例中,还包括 :
所述服务器经判断获知所述线程池中不存在空闲线程,则判断所述线程池中的线
程的数目是否达到设定值 ;
所述服务器若判断获知所述线程池中的线程的数目未达到设定值,则创建新线
程,并通过创建的所述新线程建立与所述源客户端的连接。
在上述即时通信方法的一个实施例中,还包括 :
所述服务器若判断获知所述线程池中的线程的数目达到设定值,则将所述源客户
端进入等待队列中,并通过轮询方式判断是否存在释放的空闲线程 ;
所述服务器若判断获知存在释放的空闲线程,则通过所述释放的空闲线程建立与
所述源客户端的连接。
在上述即时通信方法的一个实施例中,所述源客户端若判断获知当前的位置服务
功能已经开启,则启用全球定位系统 GPS 进行定位,并判断在预设时间内是否能通过 GPS 定
位获得所述源客户端的位置信息 ;
所述源客户端若判断获知在预设时间内不能通过 GPS 定位获得所述源客户端的
位置信息,则启用移动网络获取所述源客户端的位置信息 ;
所述源客户端通过所述服务器向所述目的客户端发送所述源客户端的位置信息。
本发明的第二个方面提供一种即时通信系统,包括 :源客户端、服务器和目的客户
端 ;
所述源客户端,用于对获取的待发送文件进行编码,并对编码后的待发送文件进
行加密,获得加密后的待发送文件 ;向服务器发送文件传输请求消息,所述文件传输请求消
息包含所述源客户端的标识信息、所述加密后的待发送文件以及对所述待发送文件进行加
密的加密秘钥 ;
所述服务器,用于向目的客户端发送所述文件传输请求消息 ;
所述目的客户端,用于接收所述服务器发送的所述文件传输请求消息 ;对所述文
件传输请求消息进行解析,获得所述源客户端的标识信息、所述加密后的待发送文件以及
所述加密秘钥 ;采用所述加密秘钥对所述加密后的待发送文件进行解密,获得解密后的待
发送文件,并对所述解密后的待发送文件进行解码,获得所述待发送文件。
在上述即时通信系统的一个实施例中,所述源客户端,还用于在所述源客户端对
获取的待发送文件进行编码之前,向所述服务器发送连接请求消息,所述连接请求消息包
含所述源客户端的标识信息 ;
所述服务器,还用于接收所述连接请求消息,并经判断获知线程池中存在空闲线
程,则为所述源客户端分配一个空闲线程,并通过所述服务器分配的空闲线程建立与所述
源客户端的连接。
在上述即时通信系统的一个实施例中,所述服务器,还用于经判断获知所述线程
池中不存在空闲线程,则判断所述线程池中的线程的数目是否达到设定值 ;若判断获知所
述线程池中的线程的数目未达到设定值,则创建新线程,并通过创建的所述新线程建立与
所述源客户端的连接。
在上述即时通信系统的一个实施例中,所述服务器,还用于若判断获知所述线程
池中的线程的数目达到设定值,则将所述源客户端进入等待队列中,并通过轮询方式判断
是否存在释放的空闲线程 ;若判断获知存在释放的空闲线程,则通过所述释放的空闲线程
建立与所述源客户端的连接。
在上述即时通信系统的一个实施例中,所述源客户端,还用于若判断获知当前的
位置服务功能已经开启,则启用全球定位系统 GPS 进行定位,并判断在预设时间内是否能
通过 GPS 定位获得所述源客户端的位置信息 ;若判断获知在预设时间内不能通过 GPS 定位
获得所述源客户端的位置信息,则启用移动网络获取所述源客户端的位置信息 ;通过所述
服务器向所述目的客户端发送所述源客户端的位置信息。
本发明提供的即时通信方法及系统,通过源客户端对获取的待发送文件进行编
码,并对编码后的待发送文件进行加密,获得加密后的待发送文件,并向服务器发送文件传
输请求消息,由服务器向目的客户端发送文件传输请求消息,目的客户端接收服务器发送
的文件传输请求消息并对文件传输请求消息进行解析,获得源客户端的标识信息、加密后
的待发送文件以及加密秘钥,并采用加密秘钥对加密后的待发送文件进行解密,获得解密
后的待发送文件,并对解密后的待发送文件进行解码,获得待发送文件,从而保证了待发送
附图说明
图 1 为本发明实施例一所提供的即时通信方法的流程图 ;
图 2 为本发明实施例二所提供的即时通信方法的流程图 ;
图 3 为本发明实施例三所提供的即时通信系统 300 的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本发明一部分实施例,而不是全部的实施例。 基于本发明中的实施例,本领域普通技术人员
在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图 1 为本发明实施例一所提供的即时通信方法的流程图。 本实施例的方法包括如
下步骤 :
S110、源客户端对获取的待发送文件进行编码,并对编码后的待发送文件进行加
密,获得加密后的待发送文件。
待发送文件例如可以为文档、图片等文件,源客户端获取到待发送文件后,可以获
得待发送文件的二进制格式字节流,对二进制格式字节流进行编码,可以使用 base64 对图
片或文件等待发送文件进行编码,再对编码后的待发送文件进行加密,获得加密后的待发
送文件,加密可以采用 IDEA 加密算法对编码后的待发送文件进行加密。
S120、源客户端向服务器发送文件传输请求消息,文件传输请求消息包含源客户
端的标识信息、加密后的待发送文件以及对待发送文件进行加密的加密秘钥。
源客户端的标识信息可以为源客户端的用户名信息、物理地址信息。
S130、服务器向目的客户端发送文件传输请求消息。
S140、目的客户端接收服务器发送的文件传输请求消息。
S150、目的客户端对文件传输请求消息进行解析,获得源客户端的标识信息、加密
后的待发送文件以及加密秘钥。
S160、目的客户端采用加密秘钥对加密后的待发送文件进行解密,获得解密后的
待发送文件,并对解密后的待发送文件进行解码,获得待发送文件。
具体的,通过源客户端对获取的待发送文件进行编码,并对编码后的待发送文件
进行加密,获得加密后的待发送文件,并向服务器发送文件传输请求消息,由服务器向目的
客户端发送文件传输请求消息,目的客户端接收服务器发送的文件传输请求消息并对文件
传输请求消息进行解析,获得源客户端的标识信息、加密后的待发送文件以及加密秘钥,并
采用加密秘钥对加密后的待发送文件进行解密,获得解密后的待发送文件,并对解密后的
待发送文件进行解码,获得待发送文件。
本实施例提供的即时通信方法,通过源客户端对获取的待发送文件进行编码,并
对编码后的待发送文件进行加密,获得加密后的待发送文件,并向服务器发送文件传输请
求消息,由服务器向目的客户端发送文件传输请求消息,目的客户端接收服务器发送的文
件传输请求消息并对文件传输请求消息进行解析,获得源客户端的标识信息、加密后的待
发送文件以及加密秘钥,并采用加密秘钥对加密后的待发送文件进行解密,获得解密后的
待发送文件,并对解密后的待发送文件进行解码,获得待发送文件,从而保证了待发送文件
在传输过程中的安全性。
图 2 为本发明实施例二所提供的即时通信方法的流程图。 参照图 2,本实施例的方
法可以包括 :
S201、源客户端向服务器发送连接请求消息,连接请求消息包含源客户端的标识
信息。
S202、服务器接收连接请求消息,判断线程池中是否存在空闲线程,若存在空闲线
程,则执行 S203,否则执行 S204。
S203、服务器为源客户端分配一个空闲线程,并通过分配的空闲线程建立与源客
户端的连接,接着执行 S207。
S204、服务器判断线程池中的线程的数目是否达到设定值。 若线程池中的线程的
数目未达到设定值则执行 S205,若线程池中的线程的数目达到设定值则执行 S206。
S205、服务器创建新线程,并通过创建的新线程建立与源客户端的连接,接着执行
S207。
S206、服务器将源客户端进入等待队列中,并通过轮询方式判断是否存在释放的
空闲线程,服务器若判断获知存在释放的空闲线程,则通过释放的空闲线程建立与源客户
端的连接,接着执行 S207。
需要说明的是,可以采用 openfire 服务器作为本实施例中提及的服务器, openfire
服务器具有很高的效率和性能, openfire 服务器可以及时处理大量的客户端连接,单台
openfire 服务器的承载最大并发量可以达到 10000 以上。 例如,在 S202 至 S206 中,针对每个客户端的连接请求, openfire 服务器可以创建线程来响应客户端的连接请求,同时创建线程池管理线程,提高 openfire 服务器的执行效率,线程池中如果有 10000 个空闲线程,则openfire 服务器可以同时处理 10000 个客户端的连接请求。 并且线程池中的线程数目的大小根据服务器在运行的过程中接收到的客户端请求的数量进行自动调整,例如如果长时间没有客户端请求,则可以销毁线程,当客户端有请求而线程池中没有空闲线程并且线程池中线程数目没有达到设定值时,则可以创建新线程,( 设定值为允许创建的线程数目的最大
值 ) 时,则将发送连接请求的客户端进入等待队列中,直至线程池中有空闲线程。 并且,客
户端退出的时候,openfire 服务器可以将线程回收到线程池中,从而可以对线程进行有效管
理,提高服务器资源的利用率。
S207、源客户端对获取的待发送文件进行编码,并对编码后的待发送文件进行加
密,获得加密后的待发送文件。
S208、源客户端向服务器发送文件传输请求消息,文件传输请求消息包含源客户
端的标识信息、加密后的待发送文件以及对待发送文件进行加密的加密秘钥。
S209、服务器向目的客户端发送文件传输请求消息。
S210、目的客户端接收服务器发送的文件传输请求消息。
S211、目的客户端对文件传输请求消息进行解析,获得源客户端的标识信息、加密
后的待发送文件以及加密秘钥。
S212、目的客户端采用加密秘钥对加密后的待发送文件进行解密,获得解密后的
待发送文件,并对解密后的待发送文件进行解码,获得待发送文件。
需要说明的是,源客户端也可以分享当前的位置信息,通过全球定位系统 (Global
Positioning System,简称 GPS) 和移动网络双重定位当前的位置信息,当前的位置信息例
如可以为经纬度信息,获得当前的位置信息后可以分享给其他客户端。 通过 GPS 和移动网
络双重定位过程可以通过如下方式实现 :
源客户端若判断获知当前的位置服务功能已经开启,则启用全球定位系统 GPS 进
行定位,并判断在预设时间内是否能通过 GPS 定位获得源客户端的位置信息 ;源客户端若
判断获知在预设时间内不能通过 GPS 定位获得源客户端的位置信息,则启用移动网络获取
源客户端的位置信息。 源客户端定位到其位置信息后,可以通过服务器向目的客户端发送
源客户端的位置信息。
本实施例提供的即时通信方法,通过服务器接收连接请求消息后,判断是否存在
空闲线程,若存在空闲线程则为源客户端分配一个空闲线程,若不存在空闲线程,则判断线
程池中的线程的数目是否达到设定值,若没有达到设定值,则重新创建一个新的线程分配
给源客户端,若达到设定值,则将源客户端放入等待队列中,并通过轮询方式判断是否有释
放的空闲线程,直到有空闲线程时,则可以为源客户端分配空闲线程,从而提高服务器资源
的使用效率,实现服务器资源的有效利用。 并且通过源客户端对获取的待发送文件进行编
码、加密,以及目的客户端对接收的文件进行解密、解码处理,从而保证了待发送文件在传
输过程中的安全性。
图 3 为本发明实施例三所提供的即时通信系统 300 的结构示意图。 参照图 3,该即
时通信系统包括 :源客户端 310、服务器 320 和目的客户端 330。
源客户端 310 用于对获取的待发送文件进行编码,并对编码后的待发送文件进行
加密,获得加密后的待发送文件 ;向服务器发送文件传输请求消息,文件传输请求消息包含
源客户端的标识信息、加密后的待发送文件以及对待发送文件进行加密的加密秘钥 ;服务
器 320 用于向目的客户端发送文件传输请求消息 ;目的客户端 330 用于接收服务器发送的
文件传输请求消息 ;对文件传输请求消息进行解析,获得源客户端的标识信息、加密后的待
发送文件以及加密秘钥 ;采用加密秘钥对加密后的待发送文件进行解密,获得解密后的待
发送文件,并对解密后的待发送文件进行解码,获得待发送文件。

需要说明的是,待发送文件例如可以为文档、图片等文件,源客户端获取到待发送
文件后,可以获得待发送文件的二进制格式字节流,对二进制格式字节流进行编码,可以使
用 base64 对图片或文件等待发送文件进行编码,再对编码后的待发送文件进行加密,获得
加密后的待发送文件,加密可以采用 IDEA 加密算法对编码后的待发送文件进行加密。
本实施例提供的即时通信系统,通过源客户端对获取的待发送文件进行编码,并
对编码后的待发送文件进行加密,获得加密后的待发送文件,并向服务器发送文件传输请
求消息,由服务器向目的客户端发送文件传输请求消息,目的客户端接收服务器发送的文
件传输请求消息并对文件传输请求消息进行解析,获得源客户端的标识信息、加密后的待
发送文件以及加密秘钥,并采用加密秘钥对加密后的待发送文件进行解密,获得解密后的
待发送文件,并对解密后的待发送文件进行解码,获得待发送文件,从而保证了待发送文件
在传输过程中的安全性。
进一步的,源客户端 310,还用于在源客户端对获取的待发送文件进行编码之前,
向服务器发送连接请求消息,连接请求消息包含源客户端的标识信息 ;
服务器 320,还用于接收连接请求消息,并经判断获知线程池中存在空闲线程,则
为源客户端分配一个空闲线程,并通过服务器分配的空闲线程建立与源客户端的连接。
进一步的,服务器 320,还用于经判断获知线程池中不存在空闲线程,则判断线程
池中的线程的数目是否达到设定值 ;若判断获知线程池中的线程的数目未达到设定值,则
创建新线程,并通过创建的新线程建立与源客户端的连接。
进一步的,服务器 320,还用于若判断获知线程池中的线程的数目达到设定值,则
将源客户端进入等待队列中,并通过轮询方式判断是否存在释放的空闲线程 ;若判断获知
存在释放的空闲线程,则通过释放的空闲线程建立与源客户端的连接。
进一步的,源客户端 310,还用于若判断获知当前的位置服务功能已经开启,则启
用全球定位系统 GPS 进行定位,并判断在预设时间内是否能通过 GPS 定位获得源客户端的
位置信息 ;若判断获知在预设时间内不能通过 GPS 定位获得源客户端的位置信息,则启用
移动网络获取源客户端的位置信息 ;通过服务器向目的客户端发送源客户端的位置信息。
最后应说明的是 :以上各实施例仅用以说明本发明的技术方案,而非对其限制 ;
尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解 :其
依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征
进行等同替换 ;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技
术方案的范围。
本发明实施例一所提供的即时通信方法的流程图
图 1 本发明实施例一所提供的即时通信方法的流程图

本发明实施例二所提供的即时通信方法的流程图
图 2 本发明实施例二所提供的即时通信方法的流程图

本发明实施例三所提供的即时通信系统 300 的结构示意图
图 3 本发明实施例三所提供的即时通信系统 300 的结构示意图

本文系转载,仅供学习参考使用,如需商用,请联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值