具体实施方式
下面结合附图对本发明作进一步详细描述。
图1为本发明一个方面的计算机实现的用于收发报文的方法流程图。根据本发明的发送或接收所述报文信息的方法可通过各计算机设备中的操作系统、嵌入式模块或处理控制器来完成,为简明起见,以下将能够发送报文信息的所述操作系统、嵌入式模块或处理控制器统称为报文发送装置,将能够接收状态信息的所述操作系统、嵌入式模块或处理控制器统称为报文接收装置。为简洁说明起见,将包含所述报文发送装置的计算机设备称为第一计算机设备,将包含所述报文接收装置的计算机设备称为第二计算机设备,其中,所述第一计算机设备及第二计算机设备可合并为一个计算机设备,即所述报文发送装置及所述报文接收装置可设置在一个计算机设备中。根据本发明的报文收发系统包括前述第一计算机设备、前述第二计算机设备或前述合并所得的计算机设备中的至少两者。
其中,所述计算机设备包括但不限于:1)用户设备;2)网络设备。所述用户设备包括但不限于计算机、智能手机、PDA、IPTV等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。
根据本实施例的方法主要用于发送及接收数据报文信息。
在步骤S11中,报文发送装置获取待生成报文信息所需要包含的数据信息所属的数据内存块信息及该数据信息对应的第一描述信息。其中,该数据内存块信息包括但不限于:1)该数据内存块的标识信息;2)该数据内存块的地址信息等。该第一描述信息用于描述该数据信息的相关信息,该相关信息包括但不限于:1)该数据信息所属的文件标识信息;2)该数据信息在其所属文件中的位置信息;3)该数据信息的长度;4)该数据信息的建立时间;5)该数据信息的修改时间等。
具体地,当接收到发送报文的请求信息或所检测的自身或其他设备的运行状态信息满足预设的报文生成触发条件时,报文发送装置根据该请求信息或触发条件,确定待生成报文信息所需要包含的数据信息所属的数据内存块信息,并获取与该数据内存块信息所存储的数据信息对应的第一描述信息。其中,该第一描述信息可存储在所述数据内存块中,或该第一描述信息存储在其他内存块中但与所述数据信息具有关联关系,以使报文发送装置根据该关联关系获取所述第一描述信息。
在步骤S12中,报文发送装置根据所述第一描述信息获取报文描述信息,并将该报文描述信息存入预申请的预定大小的第一发送缓存块中。其中,报文发送装置可在执行步骤S12之前申请至少一块内存块作为发送缓存块,且所申请的发送缓存块中至少一块为所述预定大小的第一发送缓存块。其中,该第一发送缓存块的大小应大于所述报文描述信息,本领域技术人员应可根据网络协议估计当前需要发送的数据报文的描述信息大小,从而确定该第一发送缓存块的大小。
具体地,报文发送装置根据所述第一描述信息获取所述报文描述信息的方式包括但不限于:
1)报文发送装置由所述第一描述信息中选择部分或全部信息,并将所选择的信息作为报文描述信息存入第一发送缓存块中;
例如,若第一描述信息包括数据信息所属的文件标识信息、数据信息在其所属文件中的位置信息、数据信息的长度、数据信息的建立时间及数据信息的修改时间。报文发送装置由其中选择数据信息所属的文件标识信息、数据信息在其所属文件中的位置信息及数据信息的长度信息作为报文描述信息,存入第一发送缓存块中。
2)报文发送装置由所述第一描述信息中选择部分或全部信息,并对所选择的信息进行序列化处理后作为报文描述信息存入第一发送缓存块中。该序列化处理的步骤将在后续实施例中予以详述,在此不再赘述。
在步骤S13中,报文发送装置根据所述数据内存块信息,来将所述数据内存块作为所述待生成报文信息的发送缓存块,以基于所述第一发送缓存块中包含的报文描述信息及所述数据内存块中包含的数据信息来直接生成所述待生成报文信息。
具体地,报文发送装置根据所述数据内存块信息,来将发送缓存指针指向所述数据内存块,以将该数据内存块作为所述待生成报文信息的发送缓存块。其中,报文发送装置将发送缓存指针指向所述数据内存块的方式包括但不限于:
1)报文发送装置直接根据所述数据内存块信息,来将发送缓存指针指向数据内存块;
例如,报文发送装置根据数据内存块信息中包含的地址信息,直接将发送缓存指针指向数据内存块;或者,报文发送装置根据数据内存块信息中包含的内存块标识信息来获得数据内存块的地址信息,以将发送缓存指针指向数据内存块等。
2)报文发送装置通过将预申请的除所述第一发送缓存块以外的其他发送缓存块的发送缓存指针与所述数据内存块的无效指针进行交换,来将发送缓存指针指向数据内存块。该过程将在后续实施例中予以详述,在此不再赘述。
需要说明的是,步骤S12及步骤S13并无先后顺序。
随后,报文发送装置或其他装置根据发送缓存指针,直接对第一发送缓存块中包含的报文描述信息及所述数据内存块中包含的数据信息进行封装处理,以生成所述待生成报文信息并发送。
该待生成报文信息经由网络被传输至第二计算机设备,并经过解封装后由包含于第二计算机设备中的报文接收装置进行接收。其中,网络传输所采用的协议包括但不限于TCP/IP、UDP、FTP、ICMP、NetBEUI、Bluetooth等。但本领域技术人员应理解本发明不限于所述几种通信传输协议,任何已有或今后可能出现的通信协议均可适用于本发明,从而以引用方式而包含于此。
当收到需要接收报文的请求或指令后,报文接收装置申请至少两块接收缓存块来接收所述报文信息,其中,该等接收缓存块中的一块为预定大小的所述第一接收缓存块。
在步骤S21中,报文接收装置将所接收的报文信息按照先存入第一接收缓存块后存入其他接收缓存块的存储顺序,存入该至少两块接收缓存块中。其中,该第一接收缓存块的大小应与所述第一发送缓存块的大小相同或相近。需要说明的是,由于待生成报文信息在发送时包含了多层报头信息,该多层报头信息在解封装后将被丢弃,因此,报文接收装置所接收的报文信息与前述待生成报文信息可能不完全相同,但由于预设第一接收缓存块的大小应与所述第一发送缓存块的大小相同或相近,因此,在封装过程中存储于第一发送缓存块中的信息应在接收过程中被存储至第一接收缓存块中,在其他发送缓存块中存储的信息应在接收过程中被存储至其他接收缓存块中。
接着,在步骤S22中,报文接收装置由所述第一接收缓存块中的报文描述信息中获得第一描述信息,其中,该第一描述信息用于描述所述报文信息中的待存储数据信息。
具体地,报文接收装置解析第一接收缓存块中所存储的信息,以从中获取报文描述信息,并由报文描述信息中获得第一描述信息。
其中,报文接收装置由报文描述信息中获得第一描述信息的方式包括但不限于:
1)直接解析报文描述信息,以获得第一描述信息;
例如,报文接收装置解析报文描述信息,并获得第一描述信息包括待存储数据信息所属的文件标识信息、待存储数据信息在其所属文件中的位置信息及待存储数据信息的长度信息。
2)对报文描述信息进行反序列化处理,根据反序列化处理后的信息来获得第一描述信息。该反序列化处理的步骤将在后续实施例中予以详述,在此不再赘述。
接着,在步骤S23中,报文接收装置根据所述第一描述信息,建立所述其他接收缓存块和所述待存储数据信息所属文件的关联关系。
例如,第一描述信息中包括待存储数据信息所属文件的标识信息为“teacoffee”,该待存储数据信息为该文件的第56个分片,则报文接收装置根据标识信息“teacoffee”查询该文件,并通过数据指针来建立该关联关系。其中,通过数据指针建立该关联关系的方式包括但不限于:
1)创建指向其他接收缓存块的数据指针,并在该文件的相关信息中加入该数据指针的标识信息及该数据指针所指向的内存块在文件中的位置信息;
2)将其他接收缓存块的接收缓存指针与数据内存块的指针进行交换,并在该文件的相关信息中加入该接收缓存指针的标识信息及该接收缓存指针所指向的内存块在文件中的位置信息。
需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何根据所述第一描述信息,建立所述其他接收缓存块和所述待存储数据信息所属文件的关联关系的实现方式,均应包含在本发明的范围内。
根据本发明的方法,通过将数据报文中的描述信息与需要存储的数据信息分别通过两块内存块来接收,使得完成接收操作后,能够直接丢弃该描述信息并释放相应的内存块,减少了内存消耗;并且,根据本发明的方法能够直接根据存储在数据内存块中的待发送数据信息来生成待发送报文,减少了将数据信息拷贝至缓存块中的过程,大大减少了系统消耗。
作为本发明的优选方案之一,所述数据内存块包括一个或多个内存块,所述数据内存块信息包括所述一个或多个内存块的指针信息,根据本发明的方法还包括步骤S14,前述步骤S13进一步包括步骤S131及步骤S132,前述步骤S23进一步包括步骤S231及步骤S232。
在步骤S14中,报文发送装置申请多个发送缓存块,其中,所述多个发送缓存块之一为所述第一发送缓存块。具体的,报文发送装置根据数据内存块信息来获得数据内存块所包含的内存块数量,以使所申请的其他发送缓存块的数量与数据内存块所包含的内存块数量相同。
接着,步骤S11及步骤S12已在前述内容中详述,在此不再赘述。
接着,在步骤S131中,报文发送装置根据所述数据内存块信息,将其他发送缓存块的发送缓存指针分别与所述一个或多个内存块的指针进行交换。
例如,若数据内存块及其他发送缓存块均为一块内存块,以C++为例,若指向发送缓存块的指针为*a,指向数据内存块的指针为*b,报文发送装置采用无效指针*p作为中间量,执行操作p=b,b=a,a=p,即先将*a所指向的地址赋予*p,再将*b所指向的地址赋予*a,再将*p指向的地址赋予*a,则执行指针交换操作后,*a实际指向数据内存块,*b实际指向发送缓存块,*p实际指向数据内存块,实现了发送缓存块与数据内存块的指针交换。并且,由于进行指针交换后,*p由无效指针变为有效指针,且发送缓存指针*a及数据指针*p同时指向数据内存块,因此,当待发送报文信息发送完毕,发送缓存指针*a释放后,并不会对数据内存块造成影响。
当数据内存块及其他发送缓存块均包含多个内存块时,分别对各发送缓存指针与各内存块的指针执行交换操作。
其中,所述无效指针包括以下至少一种:
1)并未指向任何内存块的指针;例如,在C++语言中的NULL指针等;
2)指向存储无效数据的内存块的指针。
需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何根据所述数据内存块信息,将其他发送缓存块的发送缓存指针分别与所述一个或多个内存块的指针进行交换的实现方式,例如,基于C或其他语言来执行指针交换操作等,均应包含在本发明的范围内。
接着,在步骤S132中,报文发送装置将所述第一发送缓存的指针与交换后指向所述一个或多个内存块的发送缓存指针作为所述待生成报文信息的发送缓存块指针,以直接生成所述待生成报文信息。
报文发送装置或其他装置直接对发送缓存块指针所指向的内存块中存储的信息进信封装处理,以生成所述待生成报文信息并发送。
接着,步骤S21及步骤S22已在前述内容中详述,在此不再赘述。
接着,在步骤S232中,报文接收装置由所述第一描述信息中获得所述待存储数据信息所属文件的文件相关信息。该文件相关信息包括但不限于:1)所述待存储数据信息所属文件的标识信息;2)所述待存储数据信息在其所属文件中的位置信息等。
接着,在步骤S232中,报文接收装置根据所述文件相关信息来建立所述其他接收缓存块与所述文件的关联关系,以将所述其他接收缓存块作为数据内存块。
例如,第二计算机设备中的每个文件均对应一个文件存储信息,该文件存储信息记录其所对应的文件所包含的内存块信息及各内存块所存储的数据信息在该文件中的位置信息。在步骤S231中,报文接收装置由所述第一描述信息中获得待存储数据信息所属的文件标识信息及待存储数据信息在其所属文件中的位置信息。在步骤S232中,报文接收装置根据所获取的文件标识信息来查询该文件存储信息,并将待存储数据信息所在的其他接收缓存块的标识信息或地址信息及该其他接收缓存块所存储的数据信息在该文件中的位置信息加入所述文件存储信息中,以建立所述其他接收缓存块和所述待存储数据信息所属文件的关联关系。优选地,报文接收装置可通过将其他接收缓存块的接收缓存指针与内存池中内存块的指针进行交换,来将所述其他接收缓存块作为数据内存块,该指针交换的执行方式已在步骤S131中详述,在此不再赘述。
优选地,当建立所述其他接收缓存块与所述文件的关联关系后,报文接收装置释放所述第一接收缓存块。
具体地,当建立所述其他接收缓存块与所述文件的关联关系后,报文接收装置释放所有接收缓存指针,则由于第一接收缓存块仅对应一个接收缓存指针,因此,第一接收缓存块将被释放,而其他接收缓存块对应一个接收缓存指针及一个数据内存块指针,因此,释放接收缓存指针不会使得其他接收缓存块被释放。
作为本发明的优选方案之一,本发明还包括步骤S15、步骤S16步骤S24、步骤S25;前述步骤S12进一步包括步骤S121。
步骤S15及步骤S16可在前述步骤S11之后,报文发送装置或其他装置生成所述待发送报文之前执行。
在步骤S15中,报文发送装置获取所述数据内存块中与该报文传输协议对应的非对齐部分。
其中,报文发送装置获取该非对齐部分的方式包括但不限于:
1)获取预设的非对齐部分;例如,预设数据内存块中第N1至第N2个字节为非对齐部分等;
2)报文发送装置根据待生成报文信息的传输协议来获得非对齐部分;
例如,报文发送装置根据第一描述信息获取数据内存块中有效数据为第N1至第N3个字节,而待生成报文信息所采用的传输协议自其他发送缓存块的第N2各字节开始读取信息,且N2小于N3,则报文发送装置判断作为其他发送缓存块的数据内存块中第N1至第N2个字节为非对齐部分。
接着,在步骤S16中,报文发送装置将所述非对齐部分复制至第一发送缓存块的未用部分中。其中,所述未用部分指未填充数据的部分或所填充数据为无效数据的部分。
在步骤S121中,报文发送装置根据所复制的非对齐部分的相关信息及所述第一描述信息生成所述报文描述信息。
随后,报文发送装置或其他装置根据发送缓存指针,直接对第一发送缓存块中包含的报文描述信息及所述数据内存块中包含的数据信息进行封装处理,以生成所述待生成报文信息并发送。
该待生成报文信息经由网络被传输至第二计算机设备,并经过解封装后由包含于第二计算机设备中的报文接收装置进行接收。
步骤S24及步骤S25在前述步骤S21之后,步骤S23之前执行。
在步骤S24中,报文接收装置由所述第一描述信息中获取发送端所复制的非对齐部分的相关信息。
接着,在步骤S25中,报文接收装置根据所述相关信息,将在发送端所复制的非对齐部分移动至所述数据缓存块中。
根据本实施例的方法,解决了由于直接采用数据内存块来生成待发送报文信息而造成的信息不对齐问题。并且,通过对非对齐部分进行操作,能够将内存块字节数调节为整数,便于报文传输时进行校验。
图2为本发明一个优选实施例的计算机实现的用于收发报文的方法流程图。根据本实施例的方法包括步骤S17、步骤S11’、步骤S12、步骤S13、步骤S21、步骤S27、步骤S28、步骤S22’及步骤S23。
根据本实施例的方法能够用于发送及接收数据报文信息及非数据报文信息。
报文发送装置根据需要经由报文信息发送的信息,判断待生成报文信息的类型。
在步骤S17中,当报文信息类型为非数据报文信息时,报文发送装置根据需要经由所述报文信息发送的信息,在预申请的至少一块发送缓存块中生成待发送对象,以根据该待发送对象生成所述非数据报文信息。其中,所述待发送对象包括报文正文信息。
具体地,当需要发送非数据报文信息时,报文发送装置可申请一块或多块发送缓存块,并在该一块或多块发送缓存块中生成待发送对象。
其中,报文发送装置生成该待发送对象的方式包括但不限于:
1)生成接收端所需的初始对象,并直接将该初始对象作为该待发送对象;其中,本领域技术人员应可根据实际情况及需求来确定该初始对象的生成方式。其中,所述初始对象包括由接收端接收并执行的描述信息。
2)生成初始对象,并对该初始对象进行序列化处理,以生成带发送对象;对初始对象进行序列化的方式将在后续实施例中予以详述,在此不再赘述。
随后,报文发送装置直接对发送缓存块中包含的带发送对象进行封装处理,以生成所述待生成报文信息并发送。
或者,在步骤S11’中,当所述报文信息类型为数据报文信息时,报文发送装置获取所述数据内存块信息及所述第一描述信息。
接着,步骤S12及步骤S13已在参照图1所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
随后,报文发送装置或其他装置根据发送缓存指针,直接对第一发送缓存块中包含的报文描述信息及所述数据内存块中包含的数据信息进行封装处理,以生成所述待生成报文信息并发送。
根据步骤S17或步骤S11’至步骤S13所生成的待生成报文信息经由网络被传输至第二计算机设备,并经过解封装后由包含于第二计算机设备中的报文接收装置进行接收。
当收到需要接收报文的请求或指令后,报文接收装置申请至少两块接收缓存块来接收所述报文信息,其中,该等接收缓存块中的一块为预定大小的所述第一接收缓存块。
接着,步骤S21已在参照图1所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
接着,在步骤S27中,报文接收装置解析所述第一接收缓存块中的全部或部分报文信息,以判断所接收的所述报文信息是否为数据报文信息。
具体地,报文接收装置按照报文信息的存储顺序来解析第一接收缓存块中的信息,以获得报文类型信息,并根据该报文类型信息来判断所接收的报文信息是否为数据报文信息;或者,报文接收装置解析第一接收缓存块中的全部报文信息,并在所解析的报文信息中获得报文类型信息,以根据该报文类型信息来判断所接收的报文信息是否为数据报文信息。
在步骤S28中,当判断所述报文信息为非数据报文信息时,报文接收装置解析所有所述接收缓存块中当前未解析的报文信息,以获得初始对象。
具体地,报文接收装置获得初始对象的方式包括但不限于:
1)直接解析当前未解析的报文信息以获得初始对象;
2)对当前未解析的报文信息进行反序列化处理,并根据反序列化处理后的信息来获得初始对象;反序列化报文信息的方式将在后续实施例中予以详述,在此不再赘述。
或者,在步骤S22’中,当判断所述报文信息为数据报文信息时,由所述第一接收缓存块所存储的报文信息中获得所述第一描述信息。
接着,步骤S23已在参照图1所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
根据本实施例的方法,能够收发数据报文及非数据报文,并能够保留收发数据报文信息内存消耗少、系统资源消耗少的效果。
图3为本发明另一个优选实施例的计算机实现的用于收发报文的方法流程图。根据本实施例的方法包括步骤S17、步骤S11’、步骤S12、步骤S13、步骤S21、步骤S27、步骤S28、步骤S22’及步骤S23;其中,步骤S17进一步包括步骤S171及步骤S172,步骤S12进一步包括步骤S122,步骤S28进一步包括步骤S281及步骤S282,步骤S22进一步包括步骤S221及步骤S222。
当所述报文信息类型为非数据报文信息时,报文发送装置执行步骤S171及步骤S172。
在步骤S171中,报文发送装置根据需要经由所述报文信息发送的信息,生成所述非数据报文信息所需封装的初始对象。本领域技术人员应可根据实际情况及需求,来确定初始对象的生成方式,在此不再赘述。
接着,在步骤S172中,报文发送装置将所述初始对象序列化进行序列化处理,以将其转换为通用类对象,并将该通用类对象作为所述待发送对象,存入所述预申请的至少一块发送缓存块中,以生成所述非数据报文信息。
具体地,报文发送装置将初始对象所包含的各类型的对象均转换为通用类对象,并将转换所得的各通用类对象作为待发送对象存入所述预申请的至少一块发送缓存块中。其中,该通用类对象为能够在多数或全部平台中运行的对象,例如,文档类对象等。
或者,当所述报文信息类型为数据报文信息时,报文发送装置执行步骤S11’至步骤S13。
其中,步骤S11’已在参照图2所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
接着,在步骤S122中,报文发送装置将所述第一描述信息进行序列化处理,以将其转换为通用类描述信息,并将该通用类描述信息作为报文描述信息存入所述第一发送缓存块中。
具体地,报文发送装置将第一描述信息所包含的各类型的对象均转换为通用类对象,并将转换所得的各通用类对象作为待发送对象存入所述第一发送缓存块中。
接着,步骤S13已在参照图2所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
在所述步骤S172或步骤S122执行过程中,或者,所述步骤S172或步骤S122完成后,报文发送装置还执行根据所述序列化处理来生成序列化信息,并将该序列化信息存入所述发送缓存块中的步骤。
具体地,报文发送装置根据所述序列化处理中所执行的操作,来生成序列化信息。
例如,若在步骤S172中,报文发送装置获得了初始对象的第一级子对象A,并将整数类对象A转换为文档类对象A’,存入发送缓存块中的操作,则报文发送装置在序列化信息中记录文档类对象A’在初始对象中的类型为整数类型、文档类对象A’对应的整数类型对象为初始对象第一级子对象及该文档类对象A’在通用类对象中的位置信息。
需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何根据所述序列化处理来生成序列化信息,并将该序列化信息存入所述发送缓存块中的步骤的实现方式,均应包含在本发明的范围内。
根据步骤S17或步骤S11’至步骤S13所生成的待生成报文信息经由网络被传输至第二计算机设备,并经过解封装后由包含于第二计算机设备中的报文接收装置进行接收。
当收到需要接收报文的请求或指令后,报文接收装置申请至少两块接收缓存块来接收所述报文信息,其中,该等接收缓存块中的一块为预定大小的所述第一接收缓存块。
接着,步骤S21已在参照图1所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
当所述报文信息类型为非数据报文信息时,报文接收装置执行步骤S281及步骤S282。
在步骤S281中,当判断所述报文信息为非数据报文信息时,报文接收装置由所述报文信息中获取序列化信息,所述序列化信息包括发送端对所述初始对象进行序列化的相关信息。
接着,在步骤S282中,报文接收装置根据所述序列化信息,对所有所述接收缓存块中当前未解析的报文信息进行反序列化处理,以获得所述初始对象。
具体地,报文接收装置将所述序列化信息中记录的所有通用类对象反序列化为各通用类对象对应的对象,以获得所述初始对象。
当所述报文信息类型为非数据报文信息时,报文接收装置执行步骤S221及步骤S222。
在步骤S221中,报文接收装置由所述报文信息中获取序列化信息,所述序列化信息包括发送端对所述第一描述信息进行序列化的相关信息。
在步骤S222中,报文接收装置根据所述序列化信息,对所述第一接收缓存块中当前未解析的报文信息进行反序列化处理,以获得所述第一描述信息。
具体地,报文接收装置将所述序列化信息中记录的所有通用类对象反序列化为各通用类对象对应的对象,以获得所述第一描述信息。
作为本发明的优选方案之一,前述步骤S172进一步包括步骤S1721及步骤S1722。
在步骤S1721中,报文发送装置将所述初始对象解析为一个或多个基本对象,其中,所述基本对象包括但不限于变量,每个基本对象对应于一个基本对象类型,该基本对象类型为能够根据预置序列化模块进行序列化操作的对象类型。其中,本领域技术人员应可根据实际情况和需求来确定所述预置序列化模块,在此不再赘述。
具体地,报文发送装置根据待发送报文信息类型及预置的各类型报文格式信息,确定所述初始对象的第一级子对象的位置,并根据该第一级子对象来将所述初始对象解析为一个或多个基本对象。
例如,若预置的报文格式信息中包括登录报文格式信息,该登录报文格式信息中包括登录报文格式信息所包含的变量类型及位置信息。当根据待发送报文信息类型获得待发送报文为登录报文,则报文发送装置根据预置的登录报文格式,获得初始对象A所包括的第一级子对象“登录名称”(以下简称“子对象A1“)与第一级子对象“登录密码”(以下简称“子对象A2”),并获得第一级子对象A1及A2所在的字段位置信息。报文发送装置根据第一级子对象A1所在的字段位置信息,获得第一级子对象A1的对象类型,并分析得到当前序列化模块无法序列化第一级子对象A1的对象类型,则报文发送装置由第一级子对象A1中获得其所包含的子对象a1及a2,并分析得到子对象a1为整数类型对象,子对象a2为字符串型对象,预置序列化模块能够对整数类型及字符串类型对象进行序列化操作,则报文发送装置获得第一级子对象A1及其包含的基本对象a1及a2。报文发送装置根据第一级子对象A2所在的字段位置信息,获得第一级子对象A2的对象类型为整数类型,预置序列化模块能够对整数类型对象进行序列化操作,则报文发送装置将第一级子对象A2作为基本对象。
需要说明的是,当对象类型为自定义对象时,报文分析装置可通过获取自定义对象的对象定义信息来判断对象类型。
需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何将所述初始对象解析为一个或多个基本对象的实现方式,均应包含在本发明的范围内。
在步骤S1722中,报文发送装置分别根据所述每个基本对象所对应的预置序列化模块,将所述一个或多个基本对象转换为一个或多个通用类对象,并存入所述第一发送缓存块中。
需要说明的是,步骤S1721及步骤S1722可同时进行,例如,在步骤S1721中,获得基本对象a1及a2后,报文发送装置即可执行步骤S1722,将基本对象a1及a2转换为通用类对象并存入第一发送缓存块中,随后,报文发送装置再执行步骤S1721,获得基本对象A2,并将基本对象A2转换为通用类对象并存入第一发送缓存块中。
优选地,报文发送装置根据执行步骤S1721及步骤S1722过程中所获得的各通用类对象对应的各基本对象的对象类型、各基本对象在待生成的初始对象中的第一位置信息及各通用类对象在报文信息中的第二位置信息来生成序列化信息,并存入第一发送缓存块中。
作为本发明的优选方案之一,前述步骤S122进一步包括步骤S1221及步骤S1222。
在步骤S1221中,报文发送装置将所述第一描述信息解析为一个或多个基本对象,其中,每个基本对象对应于一个基本对象类型。其中,将所述第一描述信息解析为一个或多个基本对象的步骤与步骤S1721相同或相似,在此不再赘述。
在步骤S1222中,报文发送装置分别根据所述每个基本对象所对应的基本对象类型的转换规则,将所述一个或多个基本对象转换为一个或多个通用类对象,并存入所述第一发送缓存块中。其中,步骤1222与步骤S1721相同或相似,在此不再赘述。
优选地,报文发送装置根据执行步骤S1221及步骤S1222过程中所获得的各通用类对象对应的各基本对象的对象类型、各基本对象在待生成的第一描述信息中的第一位置信息及各通用类对象在报文信息中的第二位置信息来生成序列化信息,并存入第一发送缓存块中。
作为本发明的优选方案之一,所述序列化信息包括各通用类对象对应的各基本对象的对象类型、各基本对象在待生成的初始对象或第一描述信息中的第一位置信息及各通用类对象在报文信息中的第二位置信息,前述步骤S282及步骤S222中的反序列化处理包括步骤S291及步骤S292。
在步骤S291中,报文接收装置由所述序列化信息中获取所述对象类型、所述第一位置信息及所述第二位置信息。
接着,在步骤S292中,报文接收装置根据所述对象类型、所述第一位置信息及所述第二位置信息,将所述通用类对象反序列化为所述初始对象或所述第一描述信息。
例如,若序列化信息为初始对象的序列化信息,该序列化信息中记录文档类对象A’在初始对象中的类型为整数类型、文档类对象A’对应的整数类型对象为初始对象第一级子对象及该文档类对象A’在通用类对象中的位置信息。则报文接收装置根据该序列化信息,在通用类对象中查询并获得对象A’,并将文档类对象A’反序列化为整数类型对象A,并将对象A作为初始对象的第一级子对象。本领域技术人员应可根据实际情况及需求来确定将所述通用类对象反序列化为基本对象的方式,在此不再赘述。
又例如,若序列化信息为第一描述信息的序列化信息,该序列化信息中记录文档类对象B’在初始对象中的类型为字符类型、文档类对象B’对应的整数类型对象在第一描述信息中的第一位置信息及该文档类对象A’在通用类对象中的第二位置信息。则报文接收装置根据第二位置信息,在通用类对象中查询并获得对象B’,并将文档类对象B’反序列化为字符类型对象B,并根据第一位置信息来确定对象B在第一描述信息中的位置。
需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何根据所述对象类型、所述第一位置信息及所述第二位置信息,将所述各基本对象反序列化为所述初始对象或所述第一描述信息的实现方式,均应包含在本发明的范围内。
根据本实施例的方法,通过将第一描述信息或初始对象序列化为通用类对象,使得报文接收装置在读取报文信息时,无需关注待解析信息在内存块中的具体位置,而仅需关注待解析信息在整个报文信息中的位置,即从分块的缓存读取方式转变为整体的文档读取方式,通过简单的读、写、查询等方式即能定位待解析信息。
图4为本发明一个方面的用于收发报文的系统结构示意图。
根据本实施例的方法主要用于发送及接收数据报文信息。
第一获取装置11获取待生成报文信息所需要包含的数据信息所属的数据内存块信息及该数据信息对应的第一描述信息。其中,该数据内存块信息包括但不限于:1)该数据内存块的标识信息;2)该数据内存块的地址信息等。该第一描述信息用于描述该数据信息的相关信息,该相关信息包括但不限于:1)该数据信息所属的文件标识信息;2)该数据信息在其所属文件中的位置信息;3)该数据信息的长度;4)该数据信息的建立时间;5)该数据信息的修改时间等。
具体地,当接收到发送报文的请求信息或所检测的自身或其他设备的运行状态信息满足预设的报文生成触发条件时,第一获取装置11根据该请求信息或触发条件,确定待生成报文信息所需要包含的数据信息所属的数据内存块信息,并获取与该数据内存块信息所存储的数据信息对应的第一描述信息。其中,该第一描述信息可存储在所述数据内存块中,或该第一描述信息存储在其他内存块中但与所述数据信息具有关联关系,以使第一获取装置11能够根据该关联关系获取所述第一描述信息。
第二获取装置12根据所述第一描述信息获取报文描述信息,并将该报文描述信息存入预申请的预定大小的第一发送缓存块中。其中,报文发送装置可在第二获取装置12执行操作之前申请至少一块内存块作为发送缓存块,且所申请的发送缓存块中至少一块为所述预定大小的第一发送缓存块。其中,该第一发送缓存块的大小应大于所述报文描述信息,本领域技术人员应可根据网络协议估计当前需要发送的数据报文的描述信息大小,从而确定该第一发送缓存块的大小。
具体地,第二获取装置12根据所述第一描述信息获取所述报文描述信息的方式包括但不限于:
1)第二获取装置12由所述第一描述信息中选择部分或全部信息,并将所选择的信息作为报文描述信息存入第一发送缓存块中;
例如,若第一描述信息包括数据信息所属的文件标识信息、数据信息在其所属文件中的位置信息、数据信息的长度、数据信息的建立时间及数据信息的修改时间。第二获取装置12由其中选择数据信息所属的文件标识信息、数据信息在其所属文件中的位置信息及数据信息的长度信息作为报文描述信息,存入第一发送缓存块中。
2)第二获取装置12由所述第一描述信息中选择部分或全部信息,并对所选择的信息进行序列化处理后作为报文描述信息存入第一发送缓存块中。该序列化处理的步骤将在后续实施例中予以详述,在此不再赘述。
第一变更装置13根据所述数据内存块信息,来将所述数据内存块作为所述待生成报文信息的发送缓存块,以基于所述第一发送缓存块中包含的报文描述信息及所述数据内存块中包含的数据信息来直接生成所述待生成报文信息。
具体地,第一变更装置13根据所述数据内存块信息,来将发送缓存指针指向所述数据内存块,以将该数据内存块作为所述待生成报文信息的发送缓存块。其中,第一变更装置13将发送缓存指针指向所述数据内存块的方式包括但不限于:
1)第一变更装置13直接根据所述数据内存块信息,来将发送缓存指针指向数据内存块;
例如,第一变更装置13根据数据内存块信息中包含的地址信息,直接将发送缓存指针指向数据内存块;或者,第一变更装置13根据数据内存块信息中包含的内存块标识信息来获得数据内存块的地址信息,以将发送缓存指针指向数据内存块等。
2)第一变更装置13通过将预申请的除所述第一发送缓存块以外的其他发送缓存块的发送缓存指针与所述数据内存块的无效指针进行交换,来将发送缓存指针指向数据内存块。该过程将在后续实施例中予以详述,在此不再赘述。
需要说明的是,第二获取装置12及第一变更装置13在执行操作时并无先后顺序。
随后,包含于报文发送装置或其他装置中的报文封装装置根据发送缓存指针,直接对第一发送缓存块中包含的报文描述信息及所述数据内存块中包含的数据信息进行封装处理,以生成所述待生成报文信息并发送。
该待生成报文信息经由网络被传输至第二计算机设备,并经过报文解封装装置解封装后由包含于第二计算机设备中的报文接收装置进行接收。其中,网络传输所采用的协议包括但不限于TCP/IP、UDP、FTP、ICMP、NetBEUI、Bluetooth等。但本领域技术人员应理解本发明不限于所述几种通信传输协议,任何已有或今后可能出现的通信协议均可适用于本发明,从而以引用方式而包含于此。
当收到需要接收报文的请求或指令后,报文接收装置申请至少两块接收缓存块来接收所述报文信息,其中,该等接收缓存块中的一块为预定大小的所述第一接收缓存块。
接收装置21将所接收的报文信息按照先存入第一接收缓存块后存入其他接收缓存块的存储顺序,存入该至少两块接收缓存块中。其中,该第一接收缓存块的大小应与所述第一发送缓存块的大小相同或相近。需要说明的是,由于待生成报文信息在发送时包含了多层报头信息,该多层报头信息在解封装后将被丢弃,因此,接收装置21所接收的报文信息与前述待生成报文信息可能不完全相同,但由于预设第一接收缓存块的大小应与所述第一发送缓存块的大小相同或相近,因此,在封装过程中存储于第一发送缓存块中的信息应在接收过程中被存储至第一接收缓存块中,在其他发送缓存块中存储的信息应在接收过程中被存储至其他接收缓存块中。
接着,第四获取装置22由所述第一接收缓存块中的报文描述信息中获得第一描述信息,其中,该第一描述信息用于描述所述报文信息中的待存储数据信息。
具体地,第四获取装置22解析第一接收缓存块中所存储的信息,以从中获取报文描述信息,并由报文描述信息中获得第一描述信息。
其中,第四获取装置22由报文描述信息中获得第一描述信息的方式包括但不限于:
1)直接解析报文描述信息,以获得第一描述信息;
例如,第四获取装置22解析报文描述信息,并获得第一描述信息包括待存储数据信息所属的文件标识信息、待存储数据信息在其所属文件中的位置信息及待存储数据信息的长度信息。
2)对报文描述信息进行反序列化处理,根据反序列化处理后的信息来获得第一描述信息。该反序列化处理的步骤将在后续实施例中予以详述,在此不再赘述。
接着,第二变更装置23根据所述第一描述信息,建立所述其他接收缓存块和所述待存储数据信息所属文件的关联关系。
例如,第一描述信息中包括待存储数据信息所属文件的标识信息为“teacoffee”,该待存储数据信息为该文件的第56个分片,则第二变更装置23根据标识信息“teacoffee”查询该文件,并通过数据指针来建立该关联关系。其中,通过数据指针建立该关联关系的方式包括但不限于:
1)创建指向其他接收缓存块的数据指针,并在该文件的相关信息中加入该数据指针的标识信息及该数据指针所指向的内存块在文件中的位置信息;
2)将其他接收缓存块的接收缓存指针与数据内存块的指针进行交换,并在该文件的相关信息中加入该接收缓存指针的标识信息及该接收缓存指针所指向的内存块在文件中的位置信息。
需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何根据所述第一描述信息,建立所述其他接收缓存块和所述待存储数据信息所属文件的关联关系的实现方式,均应包含在本发明的范围内。
根据本发明的方法,通过将数据报文中的描述信息与需要存储的数据信息分别通过两块内存块来接收,使得完成接收操作后,能够直接丢弃该描述信息并释放相应的内存块,减少了内存消耗;并且,根据本发明的方法能够直接根据存储在数据内存块中的待发送数据信息来生成待发送报文,减少了将数据信息拷贝至缓存块中的过程,大大减少了系统消耗。
作为本发明的优选方案之一,所述数据内存块包括一个或多个内存块,所述数据内存块信息包括所述一个或多个内存块的指针信息,报文发布装置还包括申请装置,前述第一变更装置13进一步包括第一交换装置(图未示)及提供装置(图未示),前述第二变更装置23进一步包括第五获取装置(图未示)及第二交换装置(图未示)。
申请装置申请多个发送缓存块,其中,所述多个发送缓存块之一为所述第一发送缓存块。具体的,申请装置根据数据内存块信息来获得数据内存块所包含的内存块数量,以使所申请的其他发送缓存块的数量与数据内存块所包含的内存块数量相同。
第一获取装置11及第一变更装置12已在前述内容中详述,在此不再赘述。
第一交换装置根据所述数据内存块信息,将其他发送缓存块的发送缓存指针分别与所述一个或多个内存块的指针进行交换。
例如,若数据内存块及其他发送缓存块均为一块内存块,以C++为例,若指向发送缓存块的指针为*a,指向数据内存块的指针为*b,第一交换装置采用无效指针*p作为中间量,执行操作p=b,b=a,a=p,即先将*a所指向的地址赋予*p,再将*b所指向的地址赋予*a,再将*p指向的地址赋予*a,则执行指针交换操作后,*a实际指向数据内存块,*b实际指向发送缓存块,*p实际指向数据内存块,实现了发送缓存块与数据内存块的指针交换。并且,由于进行指针交换后,*p由无效指针变为有效指针,且发送缓存指针*a及数据指针*p同时指向数据内存块,因此,当待发送报文信息发送完毕,发送缓存指针*a释放后,并不会对数据内存块造成影响。
当数据内存块及其他发送缓存块均包含多个内存块时,分别对各发送缓存指针与各内存块的指针执行交换操作。
其中,所述无效指针包括以下至少一种:
1)并未指向任何内存块的指针;例如,在C++语言中的NULL指针等;
2)指向存储无效数据的内存块的指针。
需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何根据所述数据内存块信息,将其他发送缓存块的发送缓存指针分别与所述一个或多个内存块的指针进行交换的实现方式,例如,基于C或其他语言来执行指针交换操作等,均应包含在本发明的范围内。
接着,提供装置将所述第一发送缓存的指针与交换后指向所述一个或多个内存块的发送缓存指针作为所述待生成报文信息的发送缓存块指针,以直接生成所述待生成报文信息。
包含于报文发送装置或其他装置中的报文封装装置直接对发送缓存块指针所指向的内存块中存储的信息进信封装处理,以生成所述待生成报文信息并发送。
接着,接收装置21及第四获取装置22已在前述内容中详述,在此不再赘述。
第五获取装置由所述第一描述信息中获得所述待存储数据信息所属文件的文件相关信息。该文件相关信息包括但不限于:1)所述待存储数据信息所属文件的标识信息;2)所述待存储数据信息在其所属文件中的位置信息等。
接着,第二交换装置装置根据所述文件相关信息来建立所述其他接收缓存块与所述文件的关联关系,以将所述其他接收缓存块作为数据内存块。
例如,第二计算机设备中的每个文件均对应一个文件存储信息,该文件存储信息记录其所对应的文件所包含的内存块信息及各内存块所存储的数据信息在该文件中的位置信息。第五获取装置由所述第一描述信息中获得待存储数据信息所属的文件标识信息及待存储数据信息在其所属文件中的位置信息。第二交换装置根据所获取的文件标识信息来查询该文件存储信息,并将待存储数据信息所在的其他接收缓存块的标识信息或地址信息及该其他接收缓存块所存储的数据信息在该文件中的位置信息加入所述文件存储信息中,以建立所述其他接收缓存块和所述待存储数据信息所属文件的关联关系。优选地,第二交换装置可通过将其他接收缓存块的接收缓存指针与内存池中内存块的指针进行交换,来将所述其他接收缓存块作为数据内存块,该指针交换的执行方式与第一交换装置所采用的指针交换方式相同或相似,在此不再赘述。
优选地,报文接收装置还包括释放装置,当建立所述其他接收缓存块与所述文件的关联关系后,释放装置释放所述第一接收缓存块。
具体地,当建立所述其他接收缓存块与所述文件的关联关系后,释放装置释放所有接收缓存指针,则由于第一接收缓存块仅对应一个接收缓存指针,因此,第一接收缓存块将被释放,而其他接收缓存块对应一个接收缓存指针及一个数据内存块指针,因此,释放接收缓存指针不会使得其他接收缓存块被释放。
作为本发明的优选方案之一,报文发送装置还包括第三获取装置及拷贝装置(图未示),报文接收装置还包括第六获取装置(图未示)及移动装置(图未示);前述第二获取装置12进一步包括第一生成装置(图未示)。
第三获取装置及拷贝装置可在第一获取装置11执行操作之后,报文发送装置或其他装置生成所述待发送报文之前执行操作。
第三获取装置获取所述数据内存块中与该报文传输协议对应的非对齐部分。
其中,第三获取装置获取该非对齐部分的方式包括但不限于:
1)获取预设的非对齐部分;例如,预设数据内存块中第N1至第N2个字节为非对齐部分等;
2)第三获取装置根据待生成报文信息的传输协议来获得非对齐部分;
例如,第三获取装置根据第一描述信息获取数据内存块中有效数据为第N1至第N3个字节,而待生成报文信息所采用的传输协议自其他发送缓存块的第N2各字节开始读取信息,且N2小于N3,则第三获取装置判断作为其他发送缓存块的数据内存块中第N1至第N2个字节为非对齐部分。
拷贝装置将所述非对齐部分复制至第一发送缓存块的未用部分中。其中,所述未用部分指未填充数据的部分或所填充数据为无效数据的部分。
第一生成装置根据所复制的非对齐部分的相关信息及所述第一描述信息生成所述报文描述信息。
随后,包含于报文发送装置或其他装置中的报文封装装置根据发送缓存指针,直接对第一发送缓存块中包含的报文描述信息及所述数据内存块中包含的数据信息进行封装处理,以生成所述待生成报文信息并发送。
该待生成报文信息经由网络被传输至第二计算机设备,并经过解封装后由包含于第二计算机设备中的报文接收装置进行接收。
第六获取装置及移动装置在前述接收装置21执行操作之后,第二变更装置23执行操作之前执行操作。
第六获取装置由所述第一描述信息中获取发送端所复制的非对齐部分的相关信息。
移动装置根据所述相关信息,将在发送端所复制的非对齐部分移动至所述数据缓存块中。
根据本实施例的方法,解决了由于直接采用数据内存块来生成待发送报文信息而造成的信息不对齐问题。并且,通过对非对齐部分进行操作,能够将内存块字节数调节为整数,便于报文传输时进行校验。
图5为本发明一个优选实施例的用于收发报文的系统结构示意图。根据本实施例的报文发送装置包括第二生成装置17、第一获取装置11、第二获取装置12及第一变更装置13;报文发送装置包括接收装置21、判断装置27、第三解析装置28、第四获取装置22及第二变更装置23。
根据本实施例的方法能够用于发送及接收数据报文信息及非数据报文信息。
报文发送装置根据需要经由报文信息发送的信息,判断待生成报文信息的类型。
当报文信息类型为非数据报文信息时,第二生成装置17根据需要经由所述报文信息发送的信息,在预申请的至少一块发送缓存块中生成待发送对象,以根据该待发送对象生成所述非数据报文信息。
具体地,当需要发送非数据报文信息时,第二生成装置17可申请一块或多块发送缓存块,并在该一块或多块发送缓存块中生成待发送对象。
其中,第二生成装置17生成该待发送对象的方式包括但不限于:
1)生成接收端所需的初始对象,并直接将该初始对象作为该待发送对象;其中,本领域技术人员应可根据实际情况及需求来确定该初始对象的生成方式。
2)生成初始对象,并对该初始对象进行序列化处理,以生成带发送对象;对初始对象进行序列化的方式将在后续实施例中予以详述,在此不再赘述。
随后,包含于报文发送装置或其他装置中的报文封装装置直接对发送缓存块中包含的带发送对象进行封装处理,以生成所述待生成报文信息并发送。
或者,当所述报文信息类型为数据报文信息时,第二获取装置11获取所述数据内存块信息及所述第一描述信息。
接着,第二获取装置12及第一变更装置13已在参照图4所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
随后,报文封装装置根据发送缓存指针,直接对第一发送缓存块中包含的报文描述信息及所述数据内存块中包含的数据信息进行封装处理,以生成所述待生成报文信息并发送。
由第二生成装置17或由第一获取装置11、第二获取装置12及第一变更装置13所生成的待生成报文信息经由网络被传输至第二计算机设备,并由报文解封装装置解封装后由包含于第二计算机设备中的报文接收装置进行接收。
当收到需要接收报文的请求或指令后,报文接收装置申请至少两块接收缓存块来接收所述报文信息,其中,该等接收缓存块中的一块为预定大小的所述第一接收缓存块。
接着,接收装置21已在参照图4所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
接着,判断装置27解析所述第一接收缓存块中的全部或部分报文信息,并判断所接收的所述报文信息是否为数据报文信息。
具体地,判断装置27按照报文信息的存储顺序来解析第一接收缓存块中的信息,以获得报文类型信息,并根据该报文类型信息来判断所接收的报文信息是否为数据报文信息;或者,判断装置27解析第一接收缓存块中的全部报文信息,并在所解析的报文信息中获得报文类型信息,并根据该报文类型信息来判断所接收的报文信息是否为数据报文信息。
当判断所述报文信息为非数据报文信息时,第三解析装置28解析所有所述接收缓存块中当前未解析的报文信息,以获得初始对象。
具体地,第三解析装置28获得初始对象的方式包括但不限于:
1)第三解析装置28直接解析当前未解析的报文信息以获得初始对象;
2)第三解析装置28对当前未解析的报文信息进行反序列化处理,并根据反序列化处理后的信息来获得初始对象;反序列化报文信息的方式将在后续实施例中予以详述,在此不再赘述。
或者,当判断所述报文信息为数据报文信息时,第四获取装置22由所述第一接收缓存块所存储的报文信息中获得所述第一描述信息。
接着,第二变更装置23已在参照图4所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
根据本实施例的方法,能够收发数据报文及非数据报文,并能够保留收发数据报文信息内存消耗少、系统资源消耗少的效果。
根据本发明的一个优选实施例,报文发送装置包括第二生成装置17、第一获取装置11、第二获取装置12及第一变更装置13;报文接收装置包括接收装置21、判断装置27、第三解析装置28、第四获取装置22及第二变更装置23。其中,第二生成装置17进一步包括第一子生成装置(图未示)及第一序列化装置(图未示),第二获取装置12进一步包括第二序列化装置(图未示),第三解析装置28进一步包括第七获取装置(图未示)及第一反序列化装置(图未示),第四获取装置22进一步包括第八获取装置(图未示)及第二反序列化装置(图未示)。
当所述报文信息类型为非数据报文信息时,第一子生成装置根据需要经由所述报文信息发送的信息,生成所述非数据报文信息所需封装的初始对象。本领域技术人员应可根据实际情况及需求,来确定初始对象的生成方式,在此不再赘述。
接着,第一序列化装置将所述初始对象序列化进行序列化处理,以将其转换为通用类对象,并将该通用类对象作为所述待发送对象,存入所述预申请的至少一块发送缓存块中,以生成所述非数据报文信息。
具体地,第一序列化装置将初始对象所包含的各类型的对象均转换为通用类对象,并将转换所得的各通用类对象作为待发送对象存入所述预申请的至少一块发送缓存块中。其中,该通用类对象为能够在多数或全部平台中运行的对象,例如,文档类对象等。
或者,当所述报文信息类型为数据报文信息时,第一获取装置11执行操作。
其中,第一获取装置11已在参照图5所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
接着,第二序列化装置将所述第一描述信息进行序列化处理,以将其转换为通用类描述信息,并将该通用类描述信息作为报文描述信息存入所述第一发送缓存块中。
具体地,第二序列化装置将第一描述信息所包含的各类型的对象均转换为通用类对象,并将转换所得的各通用类对象作为待发送对象存入所述第一发送缓存块中。
接着,第一变更装置13已在参照图5所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
优选地,报文发送装置还包括第三生成装置(图未示),第三生成装置根据所述序列化处理来生成序列化信息,并将该序列化信息存入所述发送缓存块中的步骤。
具体地,第三生成装置根据所述序列化处理中所执行的操作,来生成序列化信息。
例如,若第一序列化装置获得了初始对象的第一级子对象A,并将整数类对象A转换为文档类对象A’,存入发送缓存块中的操作,则第三生成装置在序列化信息中记录文档类对象A’在初始对象中的类型为整数类型、文档类对象A’对应的整数类型对象为初始对象第一级子对象及该文档类对象A’在通用类对象中的位置信息。
需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何根据所述序列化处理来生成序列化信息,并将该序列化信息存入所述发送缓存块中的步骤的实现方式,均应包含在本发明的范围内。
由第二生成装置17或由第一获取装置11、第二获取装置12及第一变更装置13所生成的待生成报文信息经由网络被传输至第二计算机设备,并由解封装装置解封装后由包含于第二计算机设备中的报文接收装置进行接收。
当收到需要接收报文的请求或指令后,报文接收装置申请至少两块接收缓存块来接收所述报文信息,其中,该等接收缓存块中的一块为预定大小的所述第一接收缓存块。
接着,接收装置21及判断装置27已在参照图5所示实施例中予以详述,并以引用的方式包含于此,不再赘述。
当判断所述报文信息为非数据报文信息时,第七获取装置由所述报文信息中获取序列化信息,所述序列化信息包括发送端对所述初始对象进行序列化的相关信息。
接着,第一反序列化装置根据所述序列化信息,对所有所述接收缓存块中当前未解析的报文信息进行反序列化处理,以获得所述初始对象。
具体地,第一反序列化装置将所述序列化信息中记录的所有通用类对象反序列化为各通用类对象对应的对象,以获得所述初始对象。
当所述报文信息类型为非数据报文信息时,第八获取装置由所述报文信息中获取序列化信息,所述序列化信息包括发送端对所述第一描述信息进行序列化的相关信息。
接着,第二反序列化装置根据所述序列化信息,对所述第一接收缓存块中当前未解析的报文信息进行反序列化处理,以获得所述第一描述信息。
具体地,第二反序列化装置将所述序列化信息中记录的所有通用类对象反序列化为各通用类对象对应的对象,以获得所述第一描述信息。
作为本发明的优选方案之一,前述第一序列化装置进一步包括步骤第一解析装置(图未示)及第一转换装置(图未示)。
第一解析装置将所述初始对象解析为一个或多个基本对象,其中,所述基本对象包括但不限于变量,每个基本对象对应于一个基本对象类型,该基本对象类型为能够根据预置序列化模块进行序列化操作的对象类型。其中,本领域技术人员应可根据实际情况和需求来确定所述预置序列化模块,在此不再赘述。
具体地,第一解析装置根据待发送报文信息类型及预置的各类型报文格式信息,确定所述初始对象的第一级子对象的位置,并根据该第一级子对象来将所述初始对象解析为一个或多个基本对象。
例如,若预置的报文格式信息中包括登录报文格式信息,该登录报文格式信息中包括登录报文格式信息所包含的变量类型及位置信息。当根据待发送报文信息类型获得待发送报文为登录报文,则第一解析装置根据预置的登录报文格式,获得初始对象A所包括的第一级子对象“登录名称”(以下简称“子对象A1“)与第一级子对象“登录密码”(以下简称“子对象A2”),并获得第一级子对象A1及A2所在的字段位置信息。第一解析装置根据第一级子对象A1所在的字段位置信息,获得第一级子对象A1的对象类型,并分析得到当前序列化模块无法序列化第一级子对象A1的对象类型,则第一解析装置由第一级子对象A1中获得其所包含的子对象a1及a2,并分析得到子对象a1为整数类型对象,子对象a2为字符串型对象,预置序列化模块能够对整数类型及字符串类型对象进行序列化操作,则第一解析装置获得第一级子对象A1及其包含的基本对象a1及a2。第一解析装置根据第一级子对象A2所在的字段位置信息,获得第一级子对象A2的对象类型为整数类型,预置序列化模块能够对整数类型对象进行序列化操作,则第一解析装置将第一级子对象A2作为基本对象。
需要说明的是,当对象类型为自定义对象时,第一解析装置可通过获取自定义对象的对象定义信息来判断对象类型。
需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何将所述初始对象解析为一个或多个基本对象的实现方式,均应包含在本发明的范围内。
第一转换装置分别根据所述每个基本对象所对应的预置序列化模块,将所述一个或多个基本对象转换为一个或多个通用类对象,并存入所述第一发送缓存块中。
需要说明的是,第一解析装置及第一转换装置可同时执行操作,例如,第一解析装置获得基本对象a1及a2后,第一转换装置将基本对象a1及a2转换为通用类对象并存入第一发送缓存块中,随后,第一解析装置获得基本对象A2,第一转换装置将基本对象A2转换为通用类对象并存入第一发送缓存块中。
优选地,前述第三生成装置根据第一子生成装置及第一序列化装置所获得的各通用类对象对应的各基本对象的对象类型、各基本对象在待生成的初始对象中的第一位置信息及各通用类对象在报文信息中的第二位置信息来生成序列化信息,并存入第一发送缓存块中。
作为本发明的优选方案之一,第二序列化装置进一步包括第二解析装置及第二转换装置。
第二解析装置将所述第一描述信息解析为一个或多个基本对象,其中,每个基本对象对应于一个基本对象类型。其中,将所述第一描述信息解析为一个或多个基本对象的方式与第一解析装置将初始对象解析为一个或多个基本对象的方式相同或相似,在此不再赘述。
第二转换装置分别根据所述每个基本对象所对应的基本对象类型的转换规则,将所述一个或多个基本对象转换为一个或多个通用类对象,并存入所述第一发送缓存块中。其中,第二转换装置与第一转换装置相同或相似,在此不再赘述。
优选地,第三生成装置根据第二解析装置及第二转换装置所获得的各通用类对象对应的各基本对象的对象类型、各基本对象在待生成的第一描述信息中的第一位置信息及各通用类对象在报文信息中的第二位置信息来生成序列化信息,并存入第一发送缓存块中。
作为本发明的优选方案之一,所述序列化信息包括各通用类对象对应的各基本对象的对象类型、各基本对象在待生成的初始对象或第一描述信息中的第一位置信息及各通用类对象在报文信息中的第二位置信息,前述第一反序列化装置及第二反序列化装置均可通过第九获取装置(图未示)及子反序列化装置(图未示)进行反序列化处理。
第九获取装置由所述序列化信息中获取所述对象类型、所述第一位置信息及所述第二位置信息。
子反序列化装置根据所述对象类型、所述第一位置信息及所述第二位置信息,将所述通用类对象反序列化为所述初始对象或所述第一描述信息。
例如,若序列化信息为初始对象的序列化信息,该序列化信息中记录文档类对象A’在初始对象中的类型为整数类型、文档类对象A’对应的整数类型对象为初始对象第一级子对象及该文档类对象A’在通用类对象中的位置信息。则子反序列化装置根据该序列化信息,在通用类对象中查询并获得对象A’,并将文档类对象A’反序列化为整数类型对象A,并将对象A作为初始对象的第一级子对象。本领域技术人员应可根据实际情况及需求来确定将所述通用类对象反序列化为基本对象的方式,在此不再赘述。
又例如,若序列化信息为第一描述信息的序列化信息,该序列化信息中记录文档类对象B’在初始对象中的类型为字符类型、文档类对象B’对应的整数类型对象在第一描述信息中的第一位置信息及该文档类对象A’在通用类对象中的第二位置信息。则子反序列化装置根据第二位置信息,在通用类对象中查询并获得对象B’,并将文档类对象B’反序列化为字符类型对象B,并根据第一位置信息来确定对象B在第一描述信息中的位置。
需要说明的是,上述举例仅为更好地说明本发明的技术方案,而非对本发明的限制,本领域技术人员应该理解,任何根据所述对象类型、所述第一位置信息及所述第二位置信息,将所述各基本对象反序列化为所述初始对象或所述第一描述信息的实现方式,均应包含在本发明的范围内。
根据本实施例的方法,通过将第一描述信息或初始对象序列化为通用类对象,使得报文接收装置在读取报文信息时,无需关注待解析信息在内存块中的具体位置,而仅需关注待解析信息在整个报文信息中的位置,即从分块的缓存读取方式转变为整体的文档读取方式,通过简单的读、写、查询等方式即能定位待解析信息。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。