一种数据包的处理方法、装置及服务器的制造方法_2

文档序号:9869877阅读:来源:国知局
1为本发明中数据包的处理方法的流程图;
[0066]图2为本发明中响应级别为允许收不到或丢失的类型时的通信流程图;
[0067]图3为本发明中响应级别为确认收到的类型时的通信流程图;
[0068]图4为本发明中响应级别为支持消息回执的类型时的通信流程图。
【具体实施方式】
[0069]为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0070]本发明采用数据协议包的通信方式,用协议头封装XMPP数据包,通过协议头长度字段保障数据的完整性,并且定义了不同类型数据包的通信质量,从而保障了不同类型数据包的通信质量模式,并且将原始包体转换为更加有利于采用压缩算法进行压缩的格式。
[0071]如图1所示,本发明的实施例中,一种数据包的处理方法,包括:
[0072]步骤1,生成待发送的基于可扩展消息与存在协议XMPP消息数据,所述XMPP消息数据包括消息头和消息体;
[0073]步骤2,将所述消息头进行自定义封装,得到封装后的消息头;
[0074]步骤3,将所述消息体转换为符合预设协议格式的消息体;
[0075]步骤4,将所述封装后的消息头和符合预设协议格式的消息体进行封装,得到新的消息包;
[0076]步骤5,发送所述新的消息包。
[0077]本发明的上述实施例中,步骤I中生成的消息数据包括消息头和消息体,对消息头进行自定义封装得到封装后的消息头,将所述消息体转换为符合预设协议格式的消息体,再将所述封装后的消息头与所述符合预设协议格式的消息体进行第二次封装,得到所述新的消息包,服务端向客户端发送所述新的消息包。此种消息包的处理方法适合节省流量和省电的互联网环境。
[0078]其中,将所述消息头进行自定义封装,得到封装后的消息头的步骤包括:
[0079]将所述消息按照自定义协议头格式封装,所述自定义协议头包括:消息长度、消息序号、消息类型标志、消息通信质量标志以及压缩标志。
[0080]其中,所述自定义协议头扩展了协议头,消息序号,消息通信质量级别,以方便对所述新的消息包的质量等级和发送类型进行区分。
[0081]其中,所述消息长度为消息长度字段与消息序号字段、消息包类型字段、消息通信质量控制字段、消息压缩标志以及XMPP消息体的UTF-8字节流的长度之和;
[0082]所述消息序号,用于消息配对使用,对发送的消息包必须经过序号应答回复;其中,所述消息序号采用自增类型方式。
[0083]所述消息包类型主要包括请求包和响应包,所述请求包和所述响应包之间的所述消息序号必须配对;具体地,将所述消息请求包标记为0,所述消息响应包标记为I。
[0084]所述压缩标志用于区分所述消息体是否采用了压缩方式;其中,若所述消息体没有采用压缩方式,则将其定义为O ;若所述消息体采用了 zip压缩方式,则将其定义为I。
[0085]所述消息通信质量标志,用于区别消息发送的不同响应级别;其中所述不同响应级别包括:允许收不到或丢失、确认收到以及支持消息回执。
[0086]本发明的上述实施例中,所述不同响应级别包括:允许收不到或丢失、确认收到以及支持消息回执;
[0087]其中,若响应级别为允许收不到或丢失时,将该消息的质量控制标志类型定义为O ;
[0088]若响应级别为确认收到时,将该消息的质量控制标志类型定义为I ;
[0089]若所述响应级别为支持消息回执时,将该消息的质量控制标志类型定义为2。
[0090]其中,将所述消息体转换为符合预设协议格式的消息体的步骤包括:
[0091 ] 将所述消息体转换为符合UTF-8协议格式的消息体。所述UTF-8协议格式的消息体更有利于采用压缩算法进行压缩。
[0092]其中,所述发送所述新的消息包的步骤为:
[0093]获取所述新的消息包的响应级别;
[0094]依据所述响应级别发送所述新的消息包。
[0095]本发明的实施例中,获取所述新的消息包的响应级别,并且服务端根据所述响应级别向客户端发送所述新的消息包,并且接收来自客户端回应的所述新的消息包的确认包。若所述新的消息包的响应级别为允许收不到或丢失时,所述服务端不论是否接收到来自客户端回应的所述新的消息包的确认包,都不重复发送所述新的消息包。
[0096]其中,所述新的消息包的响应级别为确认收到的类型时,所述方法还包括:
[0097]检测预设时间内是否接收到第一客户端的确认包;
[0098]若未收到所述确认包,则再次发送所述新的消息包。
[0099]所述新的消息包的响应级别为确认收到时,若所述服务端没有接收到客户端回应的所述新的消息包的确认包,所述服务端在预设时间内继续向客户端发送所述新的消息包,直到收到客户端回应的所述新的消息包的确认包,服务端停止向所述客户端发送所述新的消息包。
[0100]其中,所述新的消息包的响应级别为支持消息回执的类型时,所述方法还包括:
[0101]向第一客户端发送确认包;
[0102]转发所述消息包至第二客户端;
[0103]检测是否接收到第二客户端的确认包;
[0104]若接收到第二客户端的确认包,则向第一客户端发送回执消息;
[0105]若未接收到第二客户端的确认包,则向第二客户端再次发送所述新的消息包。
[0106]本发明的实施例中,所述新的消息包的响应级别为支持消息回执的类型时,第一客户端向所述服务端发起消息,所述服务端向所述第一客户端返回确认收到消息,所述服务端向第二客户端发送所述新的消息包。所述第二客户端向所述服务端发起确认收到消息;所述服务端根据所述第二客户端确认收到的消息,向所述第一客户端发送消息;所述第一客户端收到消息后,显示该消息对方已读,并且所述第一客户端再次向所述服务端发起已读回执,此时所述服务端结束流程。在发送过程中若没出现所述确认收到消息,所述服务端负责重新发送。
[0107]依据本发明的另一个方面,提供了一种数据包的处理装置,包括:
[0108]生成模块,用于生成待发送的基于可扩展消息与存在协议XMPP消息数据,所述XMPP消息数据包括消息头和消息体;
[0109]第一封装模块,用于将所述消息头进行自定义封装,得到封装后的消息头;
[0110]转换模块,用于将所述消息体转换为符合预设协议格式的消息体;
[0111]第二封装模块,用于将所述封装后的消息头和符合预设协议格式的消息体进行封装,得到新的消息包;
[0112]第一发送模块,用于发送所述新的消息包。
[0113]具体地,所述第一封装模块具体用于将所述消息按照自定义协议头格式封装,所述自定义协议头包括:消息长度、消息序号、消息类型标志、消息通信质量标志以及压缩标
O
[0114]具体地,所述消息长度为消息长度字段与消息序号字段、消息包类型字段、消息通信质量控制字段、消息压缩标志以及XMPP消息体的UTF-8字节流的长度之和;
[0115]所述消息序号,用于消息配对使用,对发送的消息包必须经过序号应答回复;
[0116]所述消息包类型的主要包括请求包和响应包,所述请求包和所述响应包之间的所述消息序号必须配对;
[0117]所述压缩标志用于区分所述消息体没有采用压缩方和所述消息体采用了 zip压缩方式;
[0118]所述消息通信质量标志,用于区别消息发送的不同响应级别;
[0119]其中所述不同响应级别包括:允许收不到或丢失、确认收到以及支持消息回执。
[0120]其中,所述转换模块具体用于将所述消息体转换为符合UTF-8协议格式的消息体。
[0121]具体地,所述第一发送模块还包括:
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1