CN102916977B - Tcp请求的处理方法及装置 - Google Patents
Tcp请求的处理方法及装置 Download PDFInfo
- Publication number
- CN102916977B CN102916977B CN201210460494.2A CN201210460494A CN102916977B CN 102916977 B CN102916977 B CN 102916977B CN 201210460494 A CN201210460494 A CN 201210460494A CN 102916977 B CN102916977 B CN 102916977B
- Authority
- CN
- China
- Prior art keywords
- event
- title
- event type
- package device
- tcp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提供一种TCP请求的处理方法及装置,该方法包括:接收并解析TCP请求,获取所述TCP请求中的发送时间、事件类型名称和数据内容;查询事件类型名称和事件封装器的映射关系,若查找到与其对应的事件封装器,则根据所述事件封装器对所述数据内容进行封装处理生成事件,并保存所述事件和其所对应的发送时间;获取预定发送周期内保存的事件和所述发送时间,按照所述发送时间的从小到大的顺序对所述事件进行排列,并在所述发送周期到达时依次发送排列后的事件给事件处理引擎,以供所述事件处理引擎依次对接收到的事件分别进行处理。本发明通过缓存事件封装器以及按照发送时间对事件进行排序,确保了TCP请求接入处理时的高效性和严格时序性。
Description
技术领域
本发明涉及通信技术,尤其涉及一种TCP请求的处理方法及装置
背景技术
对于与互联网设备或程序进行通信的终端来说,需要对并发涌入的大量的传输控制协议(Transmission Control Protocol,以下简称TCP)请求做出实时准确的处理和快速响应。随着复杂事件处理技术的兴起,该技术在数据处理方面支持高吞吐、低延迟的特性为传统TCP请求处理问题带来新的解决途径。目前,应用复杂事件处理技术的终端对大量涌入的TCP请求进行处理的过程主要为:在接收到多个TCP请求后,需要依次对接收到的TCP请求进行事件处理。其中,以一个TCP请求进行事件处理为例:对TCP请求进行解析,获取该TCP请求中的事件类型名称以及数据内容,然后根据该事件类型名称,构建该TCP请求对应的事件封装器,再根据事件封装器,对该数据内容进行封装处理,最后,将封装处理后获取的事件发送给终端中的事件处理引擎进行相应的处理。
但是,当至少有两个TCP请求中的事件类型名称相同时,终端还会对每个TCP请求分别进行上述的处理,从而导致了终端从接收TCP请求到进行事件封装这一过程中效率相对较低的问题。另外,由于受到时延的影响,接收到的TCP请求的时间顺序可能与发送该些TCP请求的时间顺序不一致,因此,导致了事件处理引擎对该些TCP请求对应的事件的处理时序也与发送该些TCP请求的时间顺序不一致。
发明内容
本发明提供一种TCP请求的处理方法及装置,通过缓存内存中的事件封装器以及按照事件发送时间对事件进行排列,确保了事件处理的高时效性和严格时序性。
本发明提供一种TCP请求的处理方法,包括:
接收TCP请求,并对所述TCP请求进行解析,获取所述TCP请求中的事件处理头和数据内容,所述事件处理头包括发送时间和事件类型名称;
查询事件类型名称和事件封装器的映射关系,若判断存在与所述事件类型名称对应的事件封装器,则根据获取的所述事件类型名称对应的事件封装器,对所述数据内容进行封装处理,生成所述TCP请求对应的事件,并保存所述事件和所述事件对应的发送时间;
获取预定发送周期内保存的事件和所述事件对应的发送时间,按照所述事件对应的发送时间的从小到大的顺序,对所述事件进行排列,并在所述发送周期到达时,依次发送排列后的事件给事件处理引擎,以供所述事件处理引擎依次对接收到的事件分别进行处理。
本发明提供一种TCP请求的处理装置,包括:
接收模块,用于接收所述TCP请求;
解析模块,用于对所述TCP请求进行解析,获取所述TCP请求中的事件处理头和数据内容,所述事件处理头包括发送时间和事件类型名称;
判断模块,用于查询查询事件类型名称和事件封装器的映射关系,判断是否存在与所述事件类型名称对应的事件封装器;
封装处理模块,用于若所述判断模块判断出存在与所述事件类型名称对应的事件封装器,则根据获取的所述事件类型名称对应的事件封装器,对所述数据内容进行封装处理,生成所述TCP请求对应的事件;
保存模块,用于保存所述事件和所述事件对应的发送时间;
发送模块,用于获取预定发送周期内保存的事件和所述事件对应的发送时间,按照所述事件对应的发送时间的从小到大的顺序,对所述事件进行排列,并在所述发送周期到达时,依次发送排列后的事件给事件处理引擎,以供所述事件处理引擎依次对接收到的事件分别进行处理。
本发明提供一种TCP请求的处理方法及装置,通过对接收到的TCP请求进行解析,获取该TCP请求中的事件处理头和数据内容,其中,该事件处理头包括发送时间和事件类型名称,并在查询事件类型名称和事件封装器的映射关系后,判断出存在与该事件类型名称对应的事件封装器时,则根据获取的该事件类型名称对应的事件封装器,对该数据内容进行封装处理,生成该TCP请求对应的事件,并保存该事件和所述事件对应的发送时间,最后,获取预定发送周期内保存的事件和该事件对应的发送时间,按照该事件对应的发送时间的从小到大的顺序,对该事件进行排列,并在该发送周期到达时,依次发送排列后的事件给事件处理引擎,以供该事件处理引擎依次对接收到的事件分别进行处理,相对于现有技术,从而解决了现有技术中即使多个TCP请求中的事件类型名称相同时,也需要分别构建每个TCP请求中的事件类型名称对应的事件封装器而造成的事件处理效率低的问题;同时由于根据生成的事件对应的发送时间从小到大的顺序,依次发送所生成的事件,因此有效地保证了事件处理的时序性。
附图说明
图1是本发明TCP请求的处理方法实施例一的流程示意图;
图2是本发明TCP请求的处理方法实施例二的流程示意图;
图3是本发明TCP请求的处理方法实施例四的流程示意图;
图4是本发明TCP请求的处理方法实施例五的流程示意图;
图5是本发明TCP请求的处理装置实施例一的结构示意图。
具体实施方式
图1为本发明TCP请求的处理方法实施例一的流程示意图。如图1所示,该方法包括:
步骤101:接收TCP请求,并对该TCP请求进行解析,获取该TCP请求中的事件处理头和数据内容,该事件处理头包括发送时间和事件类型名称。
优选的,终端可以使用非阻塞套接字(Socket)应用编程接口,通过网络之间互连的协议(Internet Protocol,以下简称IP)地址和端口号与发送传输控制协议(Transmission Control Protocol,以下简称TCP)请求的另一个终端进行连接,并接收另一个终端发送的多个TCP请求。其中,该终端可以为互联网设备或者服务器等。
另外,在本实施例中,终端可以通过接收线程持续接收TCP请求包,该TCP请求包中包括多个TCP请求,并对所接收到的TCP请求包中的多个TCP请求分别进行解析,以获取该TCP请求格式中的事件处理头和数据内容,其中,事件处理头包括发送时间和事件类型名称字段。其中,该发送时间映射为长整型的数据值,该事件类型名称映射为字符串类型的数据值。需要注意的是,当完成对当前TCP请求包的解析后,可以继续接收下一个TCP请求包。
步骤102:查询事件类型名称和事件封装器的映射关系,若判断存在与该事件类型名称对应的事件封装器,则根据获取的该事件类型名称对应的事件封装器,对该数据内容进行封装处理,生成该TCP请求对应的事件,并保存该事件和所述事件对应的发送时间。
步骤103:获取预定发送周期内保存的事件和该事件对应的发送时间,按照该事件对应的发送时间的从小到大的顺序,对该事件进行排列,并在该发送周期到达时,依次发送排列后的事件给事件处理引擎,以供该事件处理引擎依次对接收到的事件分别进行处理。
在实施例中,该终端还可以包括事件封装线程和事件发送线程。在事件封装线程里,终端可以查询事件类型名称和事件封装器的映射关系,判断是否存在于该事件类型名称对应的事件封装器,若存在,则可以根据获取的该事件类型名称对应的事件封装器,对上述解析获取的数据内容进行封装处理,生成该TCP请求对应的事件,并保存该事件和该事件对应的发送时间。
在事件发送线程里,终端可以获取预定发送周期内保存的事件和该事件对应的发送时间,并按照该事件对应的发送时间的从小到大的顺序,对该事件进行排列,再在该发送周期到达时,依次发送排列后的事件给事件处理引擎,以供该事件处理引擎依次对接收到的事件分别进行处理。
在本实施例中,通过对接收到的TCP请求进行解析,获取该TCP请求中的事件处理头和数据内容,其中,该事件处理头包括发送时间和事件类型名称,并在查询事件类型名称和事件封装器的映射关系后,判断出存在与该事件类型名称对应的事件封装器时,则根据获取的该事件类型名称对应的事件封装器,对该数据内容进行封装处理,生成该TCP请求对应的事件,并保存该事件和所述事件对应的发送时间,最后,获取预定发送周期内保存的事件和该事件对应的发送时间,按照该事件对应的发送时间的从小到大的顺序,对该事件进行排列,并在该发送周期到达时,依次发送排列后的事件给事件处理引擎,以供该事件处理引擎依次对接收到的事件分别进行处理,相对于现有技术,从而解决了现有技术中即使多个TCP请求中的事件类型名称相同时,也需要分别构建每个TCP请求中的事件类型名称对应的事件封装器而造成的事件处理效率低的问题;同时由于根据生成的事件对应的发送时间从小到大的顺序,依次发送所生成的事件,因此有效地保证了事件处理的时序性。
图2是本发明TCP请求的处理方法实施例二的流程示意图,参照图2,该处理方法包括:
步骤201:接收TCP请求,并对该TCP请求进行解析,获取该TCP请求中的事件处理头和数据内容,该事件处理头包括发送时间和事件类型名称。
步骤202:查询事件类型名称和事件封装器的映射关系,判断是否存在与该事件类型名称对应的事件封装器,若判断出是,则执行步骤203;若判断出否,则执行步骤205。
步骤203:根据获取的该事件类型名称对应的事件封装器,对该数据内容进行封装处理,生成该TCP请求对应的事件,并保存该事件和该事件对应的发送时间。
步骤204:获取预定发送周期内保存的事件和该事件对应的发送时间,按照该事件对应的发送时间的从小到大的顺序,对该事件进行排列,并在该发送周期到达时,依次发送排列后的事件给事件处理引擎,以供该事件处理引擎依次对接收到的事件分别进行处理。结束。
步骤205:查询事件类型名称和事件类型的映射关系,判断是否存在与该事件类型名称对应的事件类型,若判断出是,则执行步骤206;若判断出否,则执行步骤207。
步骤206:根据获取的该事件类型名称对应的事件类型,构建与该事件类型名称对应的事件封装器;并将该事件类型名称和该事件类型名称对应的事件封装器保存到该事件类型名称和事件封装器的映射关系中,进一步地执行步骤203。
步骤207:事件封装器构建失败,直接退出程序。
在本实施例中,终端使用非阻塞Socket应用编程接口,通过IP地址和端口号与发送TCP请求的另一个终端进行连接,终端可以利用终端中的接收线程接收多个TCP请求,其中,该终端可以是互联网设备或者服务器等。
另外,终端可以通过接收线程持续接收TCP请求包,该TCP请求包中包括多个TCP请求,并对所接收到的TCP请求包中的多个TCP请求分别进行解析,以获取该TCP请求格式中的事件处理头和数据内容,其中,事件处理头包括发送时间和事件类型名称字段。其中,该发送时间映射为长整型的数据值,该事件类型名称映射为字符串类型的数据值。需要注意的是,当完成对当前TCP请求队列中的TCP请求包的解析后,可以继续接收下一个TCP请求包。
在实施例中,该终端还可以包括事件封装线程和事件发送线程。在事件封装线程里,终端可以查询事件类型名称和事件封装器的映射关系,判断是否存在与该事件类型名称对应的事件封装器,若存在,则可以根据获取的该事件类型名称对应的事件封装器,对上述解析获取的数据内容进行封装处理,生成该TCP请求对应的事件,并保存该事件和该事件对应的发送时间。
若不存在,则可以查询事件类型名称和事件类型的映射关系,判断是否存在与该事件类型名称对应的事件类型,若存在,则根据该事件类型名称对应的事件类型,构建与该事件类型名称对应的事件封装器,然后根据获取的该事件类型名称对应的事件封装器,对上述解析获取的数据内容进行封装处理,生成该TCP请求对应的事件,并保存该事件和该事件对应的发送时间。
最后,在发送线程里,终端可以获取预定发送周期内保存的事件和该事件对应的发送时间,并按照该事件对应的发送时间的从小到大的顺序,对该事件进行排列,再在该发送周期到达时,依次发送排列后的事件给事件处理引擎,以供该事件处理引擎依次对接收到的事件分别进行处理。
在本实施例中,通过对接收到的TCP请求进行解析,获取该TCP请求中的事件处理头和数据内容,其中,该事件处理头包括发送时间和事件类型名称,并在查询事件类型名称和事件封装器的映射关系后,判断出存在与该事件类型名称对应的事件封装器时,则根据获取的该事件类型名称对应的事件封装器,对该数据内容进行封装处理,生成该TCP请求对应的事件,并保存该事件和所述事件对应的发送时间,最后,获取预定发送周期内保存的事件和该事件对应的发送时间,按照该事件对应的发送时间的从小到大的顺序,对该事件进行排列,并在该发送周期到达时,依次发送排列后的事件给事件处理引擎,以供该事件处理引擎依次对接收到的事件分别进行处理,相对于现有技术,从而解决了现有技术中即使多个TCP请求中的事件类型名称相同时,也需要分别构建每个TCP请求中的事件类型名称对应的事件封装器而造成的事件处理效率低的问题;同时由于根据生成的事件对应的发送时间从小到大的顺序,依次发送所生成的事件,因此有效地保证了事件处理的时序性。
进一步的,在本发明的实施例三中,在上述图2所示实施例的基础上,步骤206中根据获取的该事件类型名称对应的事件类型,构建与该事件类型名称对应的事件封装器的具体实现方式为:
根据该事件类型名称对应的事件类型中的属性的名称和该属性的属性值的数据类型,分别构建各属性对应的数据类型解析器;其中,该事件封装器包括各属性对应的数据类型解析器。
则步骤206中的将该事件类型名称和该事件类型名称对应的事件封装器保存到该事件类型名称和事件封装器的映射关系中具体实现方式为:
将该事件类型名称以及该事件类型名称对应的事件类型的属性的名称、该属性的属性值的数据类型和各属性对应的数据类型解析器保存到该事件类型名称和事件封装器的映射关系中。
在本实施例中,查询事件类型名称和事件类型的映射关系,即查找当前事件类型名称对应的事件类型,判断是否存在与该事件类型名称对应的事件类型,若判断存在,获取事件类型各属性的名称和属性值的数据类型;并根据上述的各属性的名称和属性值的数据类型为各属性创建事件类型解析器,最后保存该事件类型名称所对应的各属性的名称和属性值的数据类型以及各属性创建事件类型解析器。若判断不存在,则退出程序。
更进一步的,图3是本发明TCP请求的处理方法实施例四的流程示意图,在上述图2所示实施例的基础上,如图3所示,步骤203的一种具体实现方式为:
步骤301:判断当前事件类型在进行封装过程时是否存在下一个属性,即当前事件类型所包含的各个属性是否都处理完成,若判断出是,则执行步骤302;若判断出否,则执行步骤305。
步骤302:获取当前事件类型所要进行处理的属性。
步骤303:获取数据内容中解析出来的数据字段值。
步骤304:将上述获取的数据字段值的数据类型转换为该属性值对应的数据类型;接下来继续执行步骤301,直至该事件类型不再存在下一个属性。
步骤305:将上述获取的属性值依序填入事件类型的各个属性,生成事件。
在本实施例中,终端首先根据事件类型名称在内存中通过代码查找对应的事件类型的各属性,若该事件类型存在下一个属性,则对于该属性,在解析出的数据字段中查找与其属性名称相同的字段,并取出该字段值;利用事件封装器中的数据类型解析器,将上述所获取的数据字段值的数据类型转换为该属性值的数据类型,并将其保存在内存中。例如:对于字符串形式的TCP请求,从中解析出的字段值也为字符串类型;假定一字段名为“occurenceTime”,事件类型中必定存在对应属性“occurenceTime”,数据类型为长整型;属性“occurenceTime”的数据类型解析器即可用于将字符串类型的occurenceTime值转换为长整型的occurenceTime值。
当上述所获取的数据字段值的数据类型转换为该属性值的数据类型后,接下来继续查询该事件类型是否存在下一个属性,若判断该事件类型存在下一个属性时,则继续执行上述数据类型的转换过程;若判断该事件类型不再存在下一个属性时,则利用内存中之前保存的转换后的属性值按内存中的事件类型属性顺序排列,组成属性值队列,并将队列中的属性值依次填入事件类型的各个属性中,此时封装事件的过程结束。
更进一步的,图4是本发明TCP请求的处理方法实施例五的流程示意图,在上述图2所示实施例的基础上,如图4所示,步骤204的一种具体实现方式为:
步骤401:终端检查是否到达一个发送周期,若判断为是,则执行步骤402;若判断为否,则执行步骤405。
步骤402:从事件队列中获取发送时间晚于“最新发送时间”的所有事件。
步骤403:发送上述获取的所有事件给事件处理引擎进行处理。
步骤404:更新“最新发送时间”为发送的最后一个事件的发送时间;之后继续循环执行步骤401。
步骤405:继续等待,直到发送周期到达,执行步骤402。
在本实施例中,终端检查是否到达一个发送周期,若判断到达预定的发送周期,则终端从上述事件队列中获取发送时间晚于“最新发送时间”的所有事件(“最新发送时间”为终端内存中上一个发送周期内的最后一个事件的发送时间),“最新发送时间”的初始值为0,保证终端第一次发送队列中的所有事件(即本发送周期内的事件是终端第一次发送事件,故“最新发送时间”的初始值为0)。
终端将上述所获取的所有事件发送给事件处理引擎进行处理,之后将本周期内的最后一个事件的发送时间更新为“最新发送时间”以作为下个周期发送事件的发送时间参考,最后继续循环执行上述过程。
通过处理前对构建好的事件封装器以及对应的事件类型名称绑定存储,在本次处理事件时通过查询内存中与所处理事件类型名称对应的事件封装器,若查找到当前事件类型名称对应的事件封装器,则利用所获取的事件封装器直接来封装事件,避免为相同事件类型名称重复创建事件封装器,提高事件处理的效率;若没有查找到当前事件类型名称对应的事件封装器,则通过查找当前事件类型名称对应的事件类型的属性来构建事件封装器,并利用事件封装器里的数据类型解析器进行数据字段值的数据类型转换,将获取的属性值依序填入事件类型的各个属性,生成事件;同时通过按照事件的发送时间将所封装生成的事件进行排序,使得事件处理引擎的处理顺序和事件的发送顺序一致,也保证了事件处理的严格时序性。
图5是本发明TCP请求的处理装置实施例一的结构示意图,如图5所示,该TCP请求的处理装置包括:接收模块51、解析模块52、判断模块53、封装处理模块54、保存模块56以及发送模块57,其中:接收模块51,用于接收该TCP请求;解析模块52,用于对所述TCP请求进行解析,获取该TCP请求中的事件处理头和数据内容,该事件处理头包括发送时间和事件类型名称;判断模块53,用于查询事件类型名称和事件封装器的映射关系,判断是否存在与该事件类型名称对应的事件封装器;封装处理模块54,用于若该判断模块53判断出存在与该事件类型名称对应的事件封装器,则根据获取的该事件类型名称对应的事件封装器,对该数据内容进行封装处理,生成该TCP请求对应的事件;保存模块56,用于保存该事件和该事件对应的发送时间;发送模块57,用于获取预定发送周期内保存的事件和该事件对应的发送时间,按照该事件对应的发送时间的从小到大的顺序,对该事件进行排列,并在该发送周期到达时,依次发送排列后的事件给事件处理引擎,以供该事件处理引擎依次对接收到的事件分别进行处理。
上述各模块的工作内容可参照图1、图2所示方法实施例,在此不再赘述。
在本实施例中,接收模块接收到TCP请求后利用解析模块对该TCP请求进行解析,获取该TCP请求中的事件处理头和数据内容,其中,该事件处理头包括发送时间和事件类型名称,并通过判断模块查询事件类型名称和事件封装器的映射关系后,判断出存在与该事件类型名称对应的事件封装器时,则根据获取的该事件类型名称对应的事件封装器,对该数据内容进行封装处理,生成该TCP请求对应的事件,并利用保存模块保存该事件和所述事件对应的发送时间,最后,获取预定发送周期内保存的事件和该事件对应的发送时间,按照该事件对应的发送时间的从小到大的顺序,对该事件进行排列,并在该发送周期到达时,通过发送模块依次发送排列后的事件给事件处理引擎,以供该事件处理引擎依次对接收到的事件分别进行处理,相对于现有技术,从而解决了现有技术中即使多个TCP请求中的事件类型名称相同时,也需要分别构建每个TCP请求中的事件类型名称对应的事件封装器而造成的事件处理效率低的问题;同时由于根据生成的事件对应的发送时间从小到大的顺序,依次发送所生成的事件,因此有效地保证了事件处理的时序性。
更进一步地,在图5所示实施例的基础上,该装置还包括封装器构建模块55,用于若该判断模块53判断出存在与所述事件类型名称对应的事件类型,则根据获取的所述事件类型名称对应的事件类型,构建与所述事件类型名称对应的事件封装器。
具体实现时,上述判断模块53具体还用于查询该事件类型名称和事件封装器的映射关系,若判断出没有存在与该事件类型名称对应的事件封装器,则查询事件类型名称和事件类型的映射关系,判断是否存在与该事件类型名称对应的事件类型;若查找到与该事件类型名称对应的事件类型,则利用封装器构建模块55构建事件封装器;上述保存模块54具体还用于将该事件类型名称和该事件类型名称对应的事件封装器保存到该事件类型名称和事件封装器的映射关系中;封装处理模块54用于利用该事件类型名称对应的事件封装器,对该数据内容进行封装处理,生成该TCP请求对应的事件;上述的保存模块还用于保存该事件和该事件对应的发送时间。
具体地,封装器构建模块55构建事件封装器的一种具体实现方式为:封装器构建模块55根据该事件类型名称对应的事件类型中的属性的名称和该属性的属性值的数据类型,分别构建各属性对应的数据类型解析器;其中,该事件封装器包括各属性对应的数据类型解析器,该保存模块将该事件类型名称以及该事件类型名称对应的事件类型的属性的名称、该属性的属性值的数据类型和各属性对应的数据类型解析器保存到该事件类型名称和事件封装器的映射关系中。
上述各模块的工作内容可参照图3、图4所示方法实施例,在此不再赘述。
在本实例中,接收模块接收到TCP请求后利用解析模块对该TCP请求进行解析,获取该TCP请求中的事件处理头和数据内容,其中,该事件处理头包括发送时间和事件类型名称,并通过判断模块查询事件类型名称和事件封装器的映射关系后,若判断不存在与该事件类型名称对应的事件封装器时,则通过判断模块查找当前事件类型名称对应的事件类型的属性,根据所获取的事件类型的属性利用封装器构建模块来构建事件封装器,并利用事件封装器里的数据类型解析器进行数据字段值的数据类型转换,并将其封装成为事件,并利用保存模块保存相应的信息;若判断出存在与该事件类型名称对应的事件封装器时,则根据获取的该事件类型名称对应的事件封装器,对该数据内容进行封装处理,生成该TCP请求对应的事件,并利用保存模块保存该事件和所述事件对应的发送时间,最后,获取预定发送周期内保存的事件和该事件对应的发送时间,按照该事件对应的发送时间的从小到大的顺序,对该事件进行排列,并在该发送周期到达时,通过发送模块依次发送排列后的事件给事件处理引擎,以供该事件处理引擎依次对接收到的事件分别进行处理,相对于现有技术,从而解决了现有技术中即使多个TCP请求中的事件类型名称相同时,也需要分别构建每个TCP请求中的事件类型名称对应的事件封装器而造成的事件处理效率低的问题;同时由于根据生成的事件对应的发送时间从小到大的顺序,依次发送所生成的事件,因此有效地保证了事件处理的时序性。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (6)
1.一种TCP请求的处理方法,其特征在于,包括:
接收传输控制协议TCP请求,并对所述TCP请求进行解析,获取所述TCP请求中的事件处理头和数据内容,所述事件处理头包括所述TCP请求对应的事件所对应的发送时间和事件类型名称;
查询事件类型名称和事件封装器的映射关系,若判断存在与所述事件类型名称对应的事件封装器,则根据获取的所述事件类型名称对应的事件封装器,对所述数据内容进行封装处理,生成所述TCP请求对应的事件,并保存所述事件和所述事件对应的发送时间;
获取预定发送周期内保存的事件和所述事件对应的发送时间,按照所述事件对应的发送时间的从小到大的顺序,对所述事件进行排列,并在所述发送周期到达时,依次发送排列后的事件给事件处理引擎,以供所述事件处理引擎依次对接收到的事件分别进行处理。
2.根据权利要求1所述的TCP请求的处理方法,其特征在于,所述对所述TCP请求进行解析,获取所述TCP请求中的事件处理头和数据内容之后,所述方法还包括:
查询所述事件类型名称和事件封装器的映射关系,若判断出没有存在与所述事件类型名称对应的事件封装器,则查询事件类型名称和事件类型的映射关系,判断是否存在与所述事件类型名称对应的事件类型;
若判断出存在与所述事件类型名称对应的事件类型,则根据获取的所述事件类型名称对应的事件类型,构建与所述事件类型名称对应的事件封装器;并将所述事件类型名称和所述事件类型名称对应的事件封装器保存到所述事件类型名称和事件封装器的映射关系中;
利用所述事件类型名称对应的事件封装器,对所述数据内容进行封装处理,生成所述TCP请求对应的事件;并保存所述事件和所述事件对应的发送时间。
3.根据权利要求2所述的TCP请求的处理方法,其特征在于,所述根据获取的所述事件类型名称对应的事件类型,构建与所述事件类型名称对应的事件封装器,包括:
根据所述事件类型名称对应的事件类型中的属性的名称和所述属性的属性值的数据类型,分别构建各属性对应的数据类型解析器;其中,所述事件封装器包括各属性对应的数据类型解析器;
则所述将所述事件类型名称和所述事件名称对应的事件封装器保存到所述事件类型名称和事件封装器的映射关系中,包括:
将所述事件类型名称以及所述事件类型名称对应的事件类型的属性的名称、所述属性的属性值的数据类型和各属性对应的数据类型解析器保存到所述事件类型名称和事件封装器的映射关系中。
4.一种TCP请求的处理装置,其特征在于,包括:
接收模块,用于接收所述TCP请求;
解析模块,用于对所述TCP请求进行解析,获取所述TCP请求中的事件处理头和数据内容,所述事件处理头包括所述TCP请求对应的事件所对应的发送时间和事件类型名称;
判断模块,用于查询事件类型名称和事件封装器的映射关系,判断是否存在与所述事件类型名称对应的事件封装器;
封装处理模块,用于若所述判断模块判断出存在与所述事件类型名称对应的事件封装器,则根据获取的所述事件类型名称对应的事件封装器,对所述数据内容进行封装处理,生成所述TCP请求对应的事件;
保存模块,用于保存所述事件和所述事件对应的发送时间;
发送模块,用于获取预定发送周期内保存的事件和所述事件对应的发送时间,按照所述事件对应的发送时间的从小到大的顺序,对所述事件进行排列,并在所述发送周期到达时,依次发送排列后的事件给事件处理引擎,以供所述事件处理引擎依次对接收到的事件分别进行处理。
5.根据权利要求4所述的处理装置,其特征在于,所述判断模块还用于查询所述事件类型名称和事件封装器的映射关系,若判断出没有存在与所述事件类型名称对应的事件封装器,则查询事件类型名称和事件类型的映射关系,判断是否存在与所述事件类型名称对应的事件类型;
则所述装置还包括:
封装器构建模块,用于若所述判断模块判断出存在与所述事件类型名称对应的事件类型,则根据获取的所述事件类型名称对应的事件类型,构建与所述事件类型名称对应的事件封装器;
所述保存模块还用于将所述事件类型名称和所述事件类型名称对应的事件封装器保存到所述事件类型名称和事件封装器的映射关系中;
所述封装处理模块具体用于所述事件类型名称对应的事件封装器,对所述数据内容进行封装处理,生成所述TCP请求对应的事件;
所述保存模块还用于保存所述事件和所述事件对应的发送时间。
6.根据权利要求5所述的处理装置,其特征在于,所述封装器构建模块具体用于根据所述事件类型名称对应的事件类型中的属性的名称和所述属性的属性值的数据类型,分别构建各属性对应的数据类型解析器;其中,所述事件封装器包括各属性对应的数据类型解析器;
则所述保存模块具体用于将所述事件类型名称以及所述事件类型名称对应的事件类型的属性的名称、所述属性的属性值的数据类型和各属性对应的数据类型解析器保存到所述事件类型名称和事件封装器的映射关系中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210460494.2A CN102916977B (zh) | 2012-11-15 | 2012-11-15 | Tcp请求的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210460494.2A CN102916977B (zh) | 2012-11-15 | 2012-11-15 | Tcp请求的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102916977A CN102916977A (zh) | 2013-02-06 |
CN102916977B true CN102916977B (zh) | 2015-07-08 |
Family
ID=47615211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210460494.2A Active CN102916977B (zh) | 2012-11-15 | 2012-11-15 | Tcp请求的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102916977B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108737457B (zh) * | 2017-04-14 | 2021-06-22 | 华为技术有限公司 | 处理请求的方法和装置 |
CN108737293B (zh) * | 2017-04-14 | 2021-06-22 | 华为技术有限公司 | 处理请求的方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101146096A (zh) * | 2006-09-14 | 2008-03-19 | 华为技术有限公司 | 事务处理方法、事务处理系统和发送端 |
-
2012
- 2012-11-15 CN CN201210460494.2A patent/CN102916977B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101146096A (zh) * | 2006-09-14 | 2008-03-19 | 华为技术有限公司 | 事务处理方法、事务处理系统和发送端 |
Also Published As
Publication number | Publication date |
---|---|
CN102916977A (zh) | 2013-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102480462B (zh) | 通用协议适配方法及装置 | |
WO2017067391A1 (zh) | 虚拟机的数据共享方法及装置 | |
CN105812351A (zh) | 实现会话共享的方法和系统 | |
CN108848025B (zh) | 数据处理方法、智能网关、物联网系统 | |
CN102195874A (zh) | 数据分组的预提取 | |
CN102055771B (zh) | 面向云服务的多并发业务流控制装置及控制方法 | |
CN104468704B (zh) | 支持内容中心网络的Web服务器系统及处理方法 | |
CN113891396B (zh) | 数据包的处理方法、装置、计算机设备和存储介质 | |
CN102333210B (zh) | 一种视频数据存储方法及其设备 | |
CN107862074A (zh) | 大数据量参数快速读写方法 | |
CN105389120A (zh) | 支持通过活动消息的rma api | |
WO2003051008A1 (en) | Packet ordering | |
CN102916977B (zh) | Tcp请求的处理方法及装置 | |
CN101478462B (zh) | 存储数据读取和写入的装置和方法及固态硬盘 | |
US7653070B2 (en) | Method and system for supporting efficient and cache-friendly TCP session lookup operations based on canonicalization tags | |
CN105933325A (zh) | 一种基于NFSoRDMA的内核态RPC通信加速方法 | |
CN103095608A (zh) | 一种dns数据包的代理转发方法 | |
US20150304271A1 (en) | Address resolution protocol buffer and buffering method thereof | |
CN102255800A (zh) | Can总线上ip数据包和can消息之间数据格式相互转换的方法 | |
CN112436998B (zh) | 一种数据传输方法及电子设备 | |
CN109981701A (zh) | 透传方法、透传系统和代理服务器 | |
CN114567614B (zh) | 基于fpga实现arp协议处理的方法及装置 | |
CN107040616B (zh) | Tcp/dn/ip网络兼容tcp/ip网络的转换方法及报文收发方法 | |
CN111782399B (zh) | 一种基于udp的配置服务器高效实现的方法 | |
CN111240867B (zh) | 一种信息通讯系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |