一种服务器的socket加密通信方法技术

技术编号:15794938 阅读:83 留言:0更新日期:2017-07-10 10:31
本发明专利技术公开了一种服务器的socket加密通信方法,包括:S1、启动新线程,根据预定参数创建服务器的socket处理器对象;S2、在所述socket处理器对象中,创建服务器socket通道对象、服务器socket连接对象和事件选择器;S3、在所述事件选择器中,为所述服务器socket通道对象注册客户端请求连接事件;S4、启动新线程,接收第一客户端发送的连接请求事件,与所述第一客户端建立socket连接;S5、连接成功后,与所述第一客户端进行数据交互。本发明专利技术的有益效果是:本技术方案通过在服务器为客户端生成socket通道对象、socket连接对象和SSL引擎,与服客户端建立socket连接和数据交互,不仅提高了数据交互的速度和效率,还大大提高了数据交互的安全性。

【技术实现步骤摘要】
一种服务器的socket加密通信方法
本专利技术涉及数据通信领域,特别涉及一种服务器的socket加密通信方法。
技术介绍
现有技术中,服务器的通信方法包括单工通信、半双工通信和全双工通信三种。单工通信是指消息只能单方向传输的工作方式。半双工通信可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替地进行。全双工通信是指在通信的任意时刻,允许数据同时在两个方向上传输。但是,一般的通信方法在速度、效率和安全性方面并不理想。
技术实现思路
本专利技术提供了一种服务器的socket加密通信方法,解决了现有技术的通信方法在速度、效率以及安全性方面并不理想的技术问题。本专利技术解决上述技术问题的技术方案如下:一种服务器的socket加密通信方法,包括:S1、启动新线程,根据预定参数创建服务器的socket处理器对象,同时启动新线程创建socket连接监视器对象,所述预定参数包括:服务类型、监听地址、监听端口、连接设定参数、消息格式变换处理类以及消息处理器;S2、在所述socket处理器对象中,创建服务器socket通道对象、服务器socket连接对象和事件选择器,并将所述服务器socket通道对象设置为非阻塞模式,将所述服务器socket连接对象与所述监听地址和所述监听端口进行绑定;S3、在所述事件选择器中,为所述服务器socket通道对象注册客户端请求连接事件;S4、启动新线程,根据所述服务器socket通道对象、所述服务器socket对象和所述事件选择器创建并启动服务器socket运行对象,接收第一客户端发送的连接请求事件,生成第一socket连接对象、所述第一socket通道对象和SSL引擎,与所述第一客户端建立socket连接;S5、连接成功后,通过所述第一socket连接对象、所述第一socket通道对象和所述SSL引擎与所述第一客户端进行数据交互,同时将所述第一socket连接对象添加到所述socket连接监视器对象的socket连接监视列表中,以对所述第一socket连接对象的连接状态进行监视。本专利技术的有益效果是:相比现有的通信方法,本技术方案通过在服务器为客户端生成socket通道对象、socket连接对象和SSL引擎,与服客户端建立socket连接和数据交互,不仅提高了数据交互的速度和效率,还大大提高了数据交互的安全性。在上述技术方案的基础上,本专利技术还可以做如下改进。优选地,步骤S4中,接收第一客户端发送的连接请求事件,生成第一socket连接对象、所述第一socket通道对象和SSL引擎,与所述第一客户端建立socket连接的方法包括:A1、当所述服务器socket通道对象接收到所述第一客户端发送的连接请求事件时,将所述连接请求事件报告给所述事件选择器;A2、当所述事件选择器接收到所述连接请求事件时,创建第一socket连接对象和第一socket通道对象,生成第一连接ID,将所述第一socket通道对象作为所述第一socket连接对象的通信通道;A3、根据所述连接设定参数中的SSL信息创建并初始化SSL上下文对象,根据所述SSL上下文对象创建SSL引擎;A4、通过所述第一socket通道对象、所述第一socket连接对象和所述SSL引擎与所述第一客户端建立socket连接。优选地,步骤S5中,连接成功之后,通过所述第一socket连接对象、所述第一socket通道对象和所述SSL引擎与所述第一客户端进行数据交互之前,还包括:B1、在所述事件选择器中为所述第一socket通道对象注册读事件,并给所述第一socket通道对象返回读事件选择键;B2、将所述读事件选择键与所述第一socket连接对象的关系保存到连接对象列表中。优选地,步骤S5中,通过所述第一socket连接对象、所述第一socket通道对象和所述SSL引擎与所述第一客户端进行数据交互的方法包括:C1、当所述第一socket通道对象接收到所述第一客户端发送的读请求事件时,将所述读请求事件报告给所述事件选择器,通过所述事件选择器将所述读事件选择键放入事件对象集合中;C2、当所述服务器需要向所述第一客户端写入数据时,在所述事件选择器中为所述第一socket通道对象注册写事件,并给所述第一socket通道对象返回写事件选择键;C3、当所述第一socket通道对象与所述第一客户端的socket通道对象的写操作准备就绪时,在所述事件选择器中生成可写事件,将所述写事件选择键放入所述事件对象集合中;C4、轮询所述事件对象集合,当询查到所述读事件选择键时,启动新线程,处理所述读事件选择键对应的所述读请求事件,当询查到所述写事件选择键时,启动新线程,处理所述写事件选择键对应的所述可写事件。优选地,步骤C4中,处理所述读事件选择键对应的所述读请求事件的方法包括:D1、根据所述读事件选择键与所述第一socket连接对象的关系定位所述第一socket连接对象和所述第一socket通道对象;D2、判断所述SSL引擎与所述第一客户端的SSL引擎是否完成握手,如是则从所述第一socket通道对象中读取到第一数据包,将所述第一数据包放入读数据缓冲区,进行拆包处理,得到第一数据块,否则进行SSL握手处理;D3、调用所述消息格式变换处理类的数据格式转换方法将所述第一数据块转化为消息格式的第一消息;D4、调用所述第一socket连接对象的消息处理方法处理所述第一消息,并通过所述第一socket通道对象将处理结果发送给所述第一客户端的socket通道对象;优选地,步骤D2中,进行拆包处理的方法包括:从所述读数据缓冲区取出所述第一数据包,将所述第一数据包的拆包状态设置为未拆包,创建解包数据缓冲区;调用所述SSL引擎的解包方法,对所述第一数据包进行解包得到第一数据块,将所述第一数据块放入所述解包数据缓冲区,将所述拆包状态设置为已拆包。优选地,步骤C4中,处理所述写事件选择键对应的所述可写事件的方法包括:E1、从数据缓存区中读取到消息格式的第二消息;E2、调用所述消息格式变换处理类的数据格式转换方法将所述第二消息转化为字节流格式的第二数据块;E3、判断所述SSL引擎与所述第一客户端的SSL引擎是否完成握手,如是则对所述第二数据块进行打包处理,得到第二数据包,并将所述第二数据包放入写数据缓冲区,然后执行步骤E4,否则进行SSL握手处理;E4、从所述写数据缓冲区中取出所述第二数据包,调用底层的写数据流方法将所述第二数据包写入所述第一socket通道对象中,并通过所述第一socket通道对象发送到所述第一客户端的socket通道对象;优选地,步骤E3中,进行打包处理的方法包括:将所述第二数据块的打包状态设置为未打包,创建打包数据缓冲区;调用所述SSL引擎的打包方法,对所述第二数据块进行打包得到第二数据包,将所述第二数据包放入所述打包数据缓冲区,将所述打包状态设置为已打包。优选地,步骤S5中,通过所述socket连接监视器对象对所述socket连接监视列表中的每个socket连接对象的连接状态进行监视的方法包括:F1、定时启动所述socket连接监视器对象中的检查socket连接的任务;F2、循环获取所述socket连接监视列表中的每个socket连接对象;F3、通过每个socket本文档来自技高网...
一种服务器的socket加密通信方法

【技术保护点】
一种服务器的socket加密通信方法,其特征在于,包括:S1、启动新线程,根据预定参数创建服务器的socket处理器对象,同时启动新线程创建socket连接监视器对象,所述预定参数包括:服务类型、监听地址、监听端口、连接设定参数、消息格式变换处理类以及消息处理器;S2、在所述socket处理器对象中,创建服务器socket通道对象、服务器socket连接对象和事件选择器,并将所述服务器socket通道对象设置为非阻塞模式,将所述服务器socket连接对象与所述监听地址和所述监听端口进行绑定;S3、在所述事件选择器中,为所述服务器socket通道对象注册客户端请求连接事件;S4、启动新线程,根据所述服务器socket通道对象、所述服务器socket对象和所述事件选择器创建并启动服务器socket运行对象,接收第一客户端发送的连接请求事件,生成第一socket连接对象、所述第一socket通道对象和SSL引擎,与所述第一客户端建立socket连接;S5、连接成功后,通过所述第一socket连接对象、所述第一socket通道对象和所述SSL引擎与所述第一客户端进行数据交互,同时将所述第一socket连接对象添加到所述socket连接监视器对象的socket连接监视列表中,以对所述第一socket连接对象的连接状态进行监视。...

【技术特征摘要】
1.一种服务器的socket加密通信方法,其特征在于,包括:S1、启动新线程,根据预定参数创建服务器的socket处理器对象,同时启动新线程创建socket连接监视器对象,所述预定参数包括:服务类型、监听地址、监听端口、连接设定参数、消息格式变换处理类以及消息处理器;S2、在所述socket处理器对象中,创建服务器socket通道对象、服务器socket连接对象和事件选择器,并将所述服务器socket通道对象设置为非阻塞模式,将所述服务器socket连接对象与所述监听地址和所述监听端口进行绑定;S3、在所述事件选择器中,为所述服务器socket通道对象注册客户端请求连接事件;S4、启动新线程,根据所述服务器socket通道对象、所述服务器socket对象和所述事件选择器创建并启动服务器socket运行对象,接收第一客户端发送的连接请求事件,生成第一socket连接对象、所述第一socket通道对象和SSL引擎,与所述第一客户端建立socket连接;S5、连接成功后,通过所述第一socket连接对象、所述第一socket通道对象和所述SSL引擎与所述第一客户端进行数据交互,同时将所述第一socket连接对象添加到所述socket连接监视器对象的socket连接监视列表中,以对所述第一socket连接对象的连接状态进行监视。2.根据权利要求1所述的一种服务器的socket加密通信方法,其特征在于,步骤S4中,接收第一客户端发送的连接请求事件,生成第一socket连接对象、所述第一socket通道对象和SSL引擎,与所述第一客户端建立socket连接的方法包括:A1、当所述服务器socket通道对象接收到所述第一客户端发送的连接请求事件时,将所述连接请求事件报告给所述事件选择器;A2、当所述事件选择器接收到所述连接请求事件时,创建第一socket连接对象和第一socket通道对象,生成第一连接ID,将所述第一socket通道对象作为所述第一socket连接对象的通信通道;A3、根据所述连接设定参数中的SSL信息创建并初始化SSL上下文对象,根据所述SSL上下文对象创建SSL引擎;A4、通过所述第一socket通道对象、所述第一socket连接对象和所述SSL引擎与所述第一客户端建立socket连接。3.根据权利要求1或2所述的一种服务器的socket加密通信方法,其特征在于,步骤S5中,连接成功之后,通过所述第一socket连接对象、所述第一socket通道对象和所述SSL引擎与所述第一客户端进行数据交互之前,还包括:B1、在所述事件选择器中为所述第一socket通道对象注册读事件,并给所述第一socket通道对象返回读事件选择键;B2、将所述读事件选择键与所述第一socket连接对象的关系保存到连接对象列表中。4.根据权利要求3所述的一种服务器的socket加密通信方法,其特征在于,步骤S5中,通过所述第一socket连接对象、所述第一socket通道对象和所述SSL引擎与所述第一客户端进行数据交互的方法包括:C1、当所述第一socket通道对象接收到所述第一客户端发送的读请求事件时,将所述读请求事件报告给所述事件选择器,通过所述事件选择器将所述读事件选择键放入事件对象集合中;C2、当所述服务器需要向所述第一客户端写入数据时,在所述事件选择器中为所述第一socket通道对象注册写事件,并给所述第一socket通道对象返回写事件选择键;C3、当所述第一socket通道对象与所述第一客户端的socket通道对象的写操作准备就绪时,在所述事件选择器中生成可写事件,将所述写事件选择键放入所述事件对象集合中;C4、轮询...

【专利技术属性】
技术研发人员:方敏
申请(专利权)人:武汉票据交易中心有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1