CN109067919A - 在2g网络状态下实现快速网络请求的方法 - Google Patents
在2g网络状态下实现快速网络请求的方法 Download PDFInfo
- Publication number
- CN109067919A CN109067919A CN201811120564.3A CN201811120564A CN109067919A CN 109067919 A CN109067919 A CN 109067919A CN 201811120564 A CN201811120564 A CN 201811120564A CN 109067919 A CN109067919 A CN 109067919A
- Authority
- CN
- China
- Prior art keywords
- data
- type
- value
- network
- server
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
Abstract
本发明公开了在2G网络状态下实现快速网络请求的方法。属于2G网络连接技术领域,该方法使得2G网络连接客户机和服务器之间的网络请求速度快、网络通信能力强和网络数据交换快。在客户机上设有编译器和解析器,在服务器上也设有编译器和解析器,从而使客户机和服务器都同时具备编码能力和解码能力;客户机和服务器通过网络通道socket长链接模块实现客户机和服务器之间的相互数据交换;在传输层对TCP/IP传输协议进行封装,然后采用数据对象tlv格式的数据流来传输2G网络的数据,从而实现客户机和服务器之间的快速数据交换。
Description
技术领域
本发明涉及2G网络连接技术领域,具体涉及在2G网络状态下实现快速网络请求的方法。
背景技术
目前的2G网络连接一般都是采用HTTP网络模块访问(HTTP+TLV)方式,HTTP网络模块访问方式的单次接口请求时间一般在8s-10s,客户机和服务器之间的网络请求速度慢。
发明内容
本发明是为了解决现有2G网络连接客户机和服务器之间的网络请求速度慢的不足,提供一种2G网络连接客户机和服务器之间的网络请求速度快、网络通信能力强、网络数据交换快的在2G网络状态下实现快速网络请求的方法。
以上技术问题是通过下列技术方案解决的:
在2G网络状态下实现快速网络请求的方法,在客户机上设有编译器和解析器,在服务器上也设有编译器和解析器,从而使客户机和服务器都同时具备编码能力和解码能力;客户机和服务器通过网络通道socket长链接模块实现客户机和服务器之间的相互数据交换;
在传输层对TCP/IP传输协议进行封装,然后采用数据对象tlv格式的数据流来传输2G网络的数据,从而实现客户机和服务器之间的快速数据交换。
本方案通过一个双向通信的网络通道socket长链接模块(TCP/IP+TLV)代替了普通HTTP网络模块访问(HTTP+TLV),在传输层对TCP/IP传输协议封装,采用TLV格式约定格式的数据流,能使单次接口请求时间从8s-10s减小到2s-3s,从而使得客户机和服务器之间的网络请求速度快、网络通信能力强和网络数据交换快。
作为优选,在客户机或服务器的发射端,对传输的数据对象进行编码,将编码后数据对象对应的数据类型转换成数据流;
在客户机或服务器的接收端,将接受的数据对象对应的数据流转化为数据类型,对数据类型进行解码得到对应的数据对象;
TLV格式是一种可变格式,其中,T是类型type的缩写,L是长度length的缩写,V是值value的缩写,一个基本的数据元包括TLV这三个域,type唯一标识该数据元,type的长度为4个字节,length的长度为2个字节,value域的长度由length来指定,value就是数据本身;
TLV格式数据对象的编码方法如下:
a1)将类型type用htonl转换为网络字节顺序,指针偏移+4;
a2)将长度length用htonl转换为网络字节顺序,指针偏移+4;
a3)若值value数据类型为int、char、short,则将其转换为网络字节顺序,指针偏移+4;
a4)若值value数据类型为字符串类型,写进后,指针偏移+length+R,其中R为修正参数,R取自然数;
当值value数据类型只有一个字符串类型时,则在写进这个字符串类型后,修正参数R取0;
当值value数据类型连续出现2n(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取2;
当值value数据类型连续出现2n+1(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取3;
a5)接着再继续处理后面的tlv。
TLV格式数据对象的解码方法如下:
b1)读取type用ntohl转换为主机字节序得到类型,指针偏移+4
b2)读取lengh用ntohl转换为主机字节序得到长度;指针偏移+4
b3)根据得到的长度读取value,若value数据类型为int、char、short,用ntohl转换为主机字节序,指针偏移+4;
b4)若值value数据类型为字符串类型,写进后,指针偏移+length+R,其中R为修正参数,R取自然数;
当值value数据类型只有一个字符串类型时,则在写进这个字符串类型后,修正参数R取0;
当值value数据类型连续出现2n(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取2;
当值value数据类型连续出现2n+1(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取3;
b5)接着再继续处理后面的tlv。
作为优选,网络通道socket长链接模块的创建和连接;
客户机端使用网络通道socket长链接模块与服务器创建网络连接;
当数据发送完成后网络通道socket长链接模块的链接不断开,一直保留到异常或者是程序退出为止才断开;
服务器端建立socket长链接的一般步骤是:
structsockaddr_inaddr;定义一个ip地址;
创建一个socket,用函数socket();
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
开启监听,用函数listen();
接收客户端上来的连接,用函数accept();
收发数据,用函数send()和recv(),或者read()和write();
关闭网络连接;
关闭监听;
客户端建立socket长链接一般步骤是:
创建一个socket,用函数socket();
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
设置要连接的对方的IP地址和端口等属性;
连接服务器,用函数connect();
收发数据,用函数send()和recv(),或者read()和write();
关闭网络连接。
作为优选,TLV格式的数据快速解析过程如下:
在解析TLV格式数据对象时,通过将目标的指针作为“对象”传入到UnpackTlvBuff解析函数中,按照顺序解析出所有的TLV数据段,在解析完每一段TLV格式的数据时回调相应的type、length、value以及“对象”,回调函数中再针对不同的“对象”作相应的数据赋值,若该type对应的是一个基本数据类型参数,则直接赋值,若该type对应的是一个结构体对象,则再次利用UnpackTlvBuff解析函数解析相应的value数值,同时传入新的“对象”以区分目标,重复以上步骤直至解析完成。
本发明能够达到如下效果:
本发明通过一个双向通信的网络通道socket长链接模块(TCP/IP+TLV)代替了普通HTTP网络模块访问(HTTP+TLV),在传输层对TCP/IP传输协议封装,采用TLV格式约定格式的数据流,能使单次接口请求时间大大缩短,从而使得客户机和服务器之间的网络请求速度快、网络通信能力强和网络数据交换快。
附图说明
图1为本发明在2G网络状态下实现快速网络通信的一种示意图。
具体实施方式
下面结合附图与实施例对本发明作进一步的说明。
实施例,在2G网络状态下实现快速网络请求的方法,参见图1所示,在客户机上设有编译器和解析器,在服务器上也设有编译器和解析器,从而使客户机和服务器都同时具备编码能力和解码能力;客户机和服务器通过网络通道socket长链接模块实现客户机和服务器之间的相互数据交换;
在传输层对TCP/IP传输协议进行封装,然后采用数据对象tlv格式的数据流来传输2G网络的数据,从而实现客户机和服务器之间的快速数据交换。
本实施例通过一个双向通信的网络通道socket长链接模块(TCP/IP+TLV)代替了普通HTTP网络模块访问(HTTP+TLV),在传输层对TCP/IP传输协议封装,采用TLV格式约定格式的数据流,能使单次接口请求时间从8s-10s减小到2s-3s,从而使得客户机和服务器之间的网络请求速度快、网络通信能力强和网络数据交换快。
在客户机或服务器的发射端,对传输的数据对象进行编码,将编码后数据对象对应的数据类型转换成数据流。
在客户机或服务器的接收端,将接受的数据对象对应的数据流转化为数据类型,对数据类型进行解码得到对应的数据对象。
TLV格式是一种可变格式,其中,T是类型type的缩写,L是长度length的缩写,V是值value的缩写,一个基本的数据元包括TLV这三个域,type唯一标识该数据元,type的长度为4个字节,length的长度为2个字节,value域的长度由length来指定,value就是数据本身。
TLV格式数据对象的编码方法如下:
a1)将类型type用htonl转换为网络字节顺序,指针偏移+4;
a2)将长度length用htonl转换为网络字节顺序,指针偏移+4;
a3)若值value数据类型为int、char、short,则将其转换为网络字节顺序,指针偏移+4;
a4)若值value数据类型为字符串类型,写进后,指针偏移+length+R,其中R为修正参数,R取自然数;
当值value数据类型只有一个字符串类型时,则在写进这个字符串类型后,修正参数R取0;
当值value数据类型连续出现2n(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取2;
当值value数据类型连续出现2n+1(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取3;
a5)接着再继续处理后面的tlv。
TLV格式数据对象的解码方法如下:
b1)读取type用ntohl转换为主机字节序得到类型,指针偏移+4
b2)读取lengh用ntohl转换为主机字节序得到长度;指针偏移+4
b3)根据得到的长度读取value,若value数据类型为int、char、short,用ntohl转换为主机字节序,指针偏移+4;
b4)若值value数据类型为字符串类型,写进后,指针偏移+length+R,其中R为修正参数,R取自然数;
当值value数据类型只有一个字符串类型时,则在写进这个字符串类型后,修正参数R取0;
当值value数据类型连续出现2n(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取2;
当值value数据类型连续出现2n+1(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取3;
b5)接着再继续处理后面的tlv。
举个例子,下面是一个tlv格式的AID(应用标识符)字节串”9F0607A0000000031010”,其中9F06是type,07是长度,A0000000031010就是AID本身的值。对于程序编写人员来说,如果有类似上面这样一串TLV编码的字节串从卡片传过来,那么要怎样从这组字节串中提取出我们想要的数据,这就牵扯出TLV解码的问题了。类型(type)字段是关于标签和编码格式的信息;长度(length)字段定义数值的长度,内容(value)字段表示实际的数值,因此,一个编码值又称TLV(type,length,value)三元组;编码是基本型或结构型,如果编码表示一个简单类型的、完整的显式值,那么编码就是基本型(primitive);如果编码表示的值具有嵌套结构,那么编码就是结构型(constructed)。
网络通道socket长链接模块的创建和连接;
客户机端使用网络通道socket长链接模块与服务器创建网络连接;
当数据发送完成后网络通道socket长链接模块的链接不断开,一直保留到异常或者是程序退出为止才断开。
这种方式的好处是不用每次去发起连接断开,在速度上可以比短连接要快一些,但是相对来说对服务器的资源压力也大,长链接用的范围很广。比如游戏系统,qq等等,长链接一般还需要定时向服务器ping数据,以保证socket链接畅通。当ping不通服务器时,需要重新开启链接。
服务器端建立socket长链接的一般步骤是:
structsockaddr_inaddr;定义一个ip地址;
创建一个socket,用函数socket();
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
开启监听,用函数listen();
接收客户端上来的连接,用函数accept();
收发数据,用函数send()和recv(),或者read()和write();
关闭网络连接;
关闭监听。
客户端建立socket长链接一般步骤是:
创建一个socket,用函数socket();
设置socket属性,用函数setsockopt();
绑定IP地址、端口等信息到socket上,用函数bind();
设置要连接的对方的IP地址和端口等属性;
连接服务器,用函数connect();
收发数据,用函数send()和recv(),或者read()和write();
关闭网络连接。
通过一个双向网络通道socket长链接模块(TCP/IP+TLV)代替了普通HTTP网络模块访问(HTTP+TLV),使单次接口请求时间从8s-10s减小到2s-3s,极大提升了客户机和服务器之间的服务效率。
TLV格式的数据快速解析过程如下:
在解析TLV格式数据对象时,通过将目标的指针作为“对象”传入到UnpackTlvBuff解析函数中,按照顺序解析出所有的TLV数据段,在解析完每一段TLV格式的数据时回调相应的type、length、value以及“对象”,回调函数中再针对不同的“对象”作相应的数据赋值,若该type对应的是一个基本数据类型参数,则直接赋值,若该type对应的是一个结构体对象,则再次利用UnpackTlvBuff解析函数解析相应的va]ue数值,同时传入新的“对象”以区分目标,重复以上步骤直至解析完成。
这样一个解析回调函数就能完成整个多层嵌套的结构体“对象”的解析过程,这样能很方便的实现多层嵌套的复杂的TLV格式协议的快速解析。从而使得客户机和服务器之间的网络请求速度快、网络通信能力强和网络数据交换快。
上面结合附图描述了本发明的实施方式,但实现时不受上述实施例限制,本领域普通技术人员可以在所附权利要求的范围内做出各种变化或修改。
Claims (4)
1.在2G网络状态下实现快速网络请求的方法,其特征在于,在客户机上设有编译器和解析器,在服务器上也设有编译器和解析器,从而使客户机和服务器都同时具备编码能力和解码能力;客户机和服务器通过网络通道socket长链接模块实现客户机和服务器之间的相互数据交换;在传输层对TCP/IP传输协议进行封装,然后采用数据对象tlv格式的数据流来传输2G网络的数据,从而实现客户机和服务器之间的快速数据交换。
2.根据权利要求1所述的一种在2G网络状态下实现快速网络请求的方法,特征在于,(2.1)在客户机或服务器的发射端,对传输的数据对象进行编码,将编码后数据对象对应的数据类型转换成数据流;
(2.2)在客户机或服务器的接收端,将接受的数据对象对应的数据流转化为数据类型,对数据类型进行解码得到对应的数据对象;
(2.3)TLV格式是一种可变格式,其中,T是类型type的缩写,L是长度length的缩写,V是值value的缩写,一个基本的数据元包括TLV这三个域,type唯一标识该数据元,type的长度为4个字节,length的长度为2个字节,value域的长度由length来指定,value就是数据本身;
(2.3.1)TLV格式数据对象的编码方法如下:
a1)将类型type用htonl转换为网络字节顺序,指针偏移+4;
a2)将长度length用htonl转换为网络字节顺序,指针偏移+4;
a3)若值value数据类型为int、char、short,则将其转换为网络字节顺序,指针偏移+4;
a4)若值value数据类型为字符串类型,写进后,指针偏移+length+R,其中R为修正参数,R取自然数;
当值value数据类型只有一个字符串类型时,则在写进这个字符串类型后,修正参数R取0;
当值value数据类型连续出现2n(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取2;
当值value数据类型连续出现2n+1(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取3;
a5)接着再继续处理后面的tlv;
(2.3.2)TLV格式数据对象的解码方法如下:
b1)读取type用ntohl转换为主机字节序得到类型,指针偏移+4
b2)读取lengh用ntohl转换为主机字节序得到长度;指针偏移+4
b3)根据得到的长度读取value,若value数据类型为int、char、short,用ntohl转换为主机字节序,指针偏移+4;
b4)若值value数据类型为字符串类型,写进后,指针偏移+length+R,其中R为修正参数,R取自然数;
当值value数据类型只有一个字符串类型时,则在写进这个字符串类型后,修正参数R取0;
当值value数据类型连续出现2n(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取2;
当值value数据类型连续出现2n+1(n为正整数)个字符串类型时,则在写进第N个字符串类型后,修正参数R取3;
b5)接着再继续处理后面的tlv。
3.根据权利要求1所述的一种在2G网络状态下实现快速网络请求的方法,特征在于,网络通道socket长链接模块的创建和连接;
(3.1)客户机端使用网络通道socket长链接模块与服务器创建网络连接;
(3.2)当数据发送完成后网络通道socket长链接模块的链接不断开,一直保留到异常或者是程序退出为止才断开;
(3.3)服务器端建立socket长链接的一般步骤是:
structsockaddr_inaddr;定义一个ip地址;
(3.3.1)、创建一个socket,用函数socket();
(3.3.2)、设置socket属性,用函数setsockopt();
(3.3.3)、绑定IP地址、端口等信息到socket上,用函数bind();
(3.3.4)、开启监听,用函数listen();
(3.3.5)、接收客户端上来的连接,用函数accept();
(3.3.6)、收发数据,用函数send()和recv(),或者read()和write();
(3.3.7)、关闭网络连接;
(3.3.8)、关闭监听;
(3.4)、客户端建立socket长链接一般步骤是:
(3.4.1)、创建一个socket,用函数socket();
(3.4.2)、设置socket属性,用函数setsockopt();
(3.4.3)、绑定IP地址、端口等信息到socket上,用函数bind();
(3.4.4)、设置要连接的对方的IP地址和端口等属性;
(3.4.5)、连接服务器,用函数connect();
(3.4.6)、收发数据,用函数send()和recv(),或者read()和write();
(3.4.7)、关闭网络连接。
4.根据权利要求2所述的一种在2G网络状态下实现快速网络请求的方法,特征在于,TLV格式的数据快速解析过程如下:
在解析TLV格式数据对象时,通过将目标的指针作为“对象”传入到UnpackTlvBuff解析函数中,按照顺序解析出所有的TLV数据段,在解析完每一段TLV格式的数据时回调相应的type、length、value以及“对象”,回调函数中再针对不同的“对象”作相应的数据赋值,若该type对应的是一个基本数据类型参数,则直接赋值,若该type对应的是一个结构体对象,则再次利用UnpackTlvBuff解析函数解析相应的value数值,同时传入新的“对象”以区分目标,重复以上步骤直至解析完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811120564.3A CN109067919A (zh) | 2018-09-26 | 2018-09-26 | 在2g网络状态下实现快速网络请求的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811120564.3A CN109067919A (zh) | 2018-09-26 | 2018-09-26 | 在2g网络状态下实现快速网络请求的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109067919A true CN109067919A (zh) | 2018-12-21 |
Family
ID=64765618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811120564.3A Pending CN109067919A (zh) | 2018-09-26 | 2018-09-26 | 在2g网络状态下实现快速网络请求的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109067919A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731332A (zh) * | 2012-10-12 | 2014-04-16 | 上海斐讯数据通信技术有限公司 | 主从通信方法和olt系统 |
CN104378336A (zh) * | 2013-08-16 | 2015-02-25 | 好看科技(深圳)有限公司 | 一种数据处理方法、系统及服务器 |
US20150201045A1 (en) * | 2014-01-13 | 2015-07-16 | Transcirrus | Automatic connection of nodes to a cloud cluster |
CN106060180A (zh) * | 2016-08-24 | 2016-10-26 | 电子科技大学 | 一种针对IPv6的基于地理位置和应用信息的寻址方法 |
-
2018
- 2018-09-26 CN CN201811120564.3A patent/CN109067919A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731332A (zh) * | 2012-10-12 | 2014-04-16 | 上海斐讯数据通信技术有限公司 | 主从通信方法和olt系统 |
CN104378336A (zh) * | 2013-08-16 | 2015-02-25 | 好看科技(深圳)有限公司 | 一种数据处理方法、系统及服务器 |
US20150201045A1 (en) * | 2014-01-13 | 2015-07-16 | Transcirrus | Automatic connection of nodes to a cloud cluster |
CN106060180A (zh) * | 2016-08-24 | 2016-10-26 | 电子科技大学 | 一种针对IPv6的基于地理位置和应用信息的寻址方法 |
Non-Patent Citations (1)
Title |
---|
CHEXLONG: "LTV 格式及编解码示例", 《CSDN》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018165113A1 (en) | Dynamic header compression for constrained networks | |
CN101326502B (zh) | 报头压缩/解压缩构架 | |
TWI530138B (zh) | 用於下行鏈路機器對機器通訊之聚集小型叢發傳輸技術 | |
EP3014852A2 (en) | Methods for dynamically binding header field identifiers in a network control protocol | |
US10817460B2 (en) | RDMA data sending and receiving methods, electronic device, and readable storage medium | |
CN109217983B (zh) | 一种工业物联网的作业终端通信协议设计方法 | |
CN104066110A (zh) | 一种无线路由器稳定性测试系统和测试方法 | |
CN101197773B (zh) | 基于多链路的报文压缩发送和接收解压缩方法及系统 | |
PH12015501447B1 (en) | Method for using fpga to realize 32-bit addressing and accessing of sv data | |
CN103327027A (zh) | 内容中心网络底层实现方法、内容中心网络以及通信方法 | |
Ayoub et al. | Implementation of SCHC in NS-3 and Comparison with 6LoWPAN | |
CN109298866A (zh) | 基于c语言的tlv格式协议快速解析方法 | |
CN105743702A (zh) | 一种goose报文的订阅识别方法 | |
CN110167193A (zh) | WiFi自动配网方法和WiFi设备 | |
CN114143119A (zh) | 一种基于fpga的行情低延时接口装置 | |
CN103152422B (zh) | 多流多宿主环境下文件递归分割传输并重新组合的方法 | |
CN102868557B (zh) | 一种网管和xPON设备之间的配置同步实现方法 | |
CN109067919A (zh) | 在2g网络状态下实现快速网络请求的方法 | |
CN100401671C (zh) | 一种文件传送方法 | |
CN108566441B (zh) | 一种nas设备处理数据的方法、nas设备及介质 | |
CN102761780A (zh) | 智能遥控器获取媒体元数据的方法 | |
CN104081747B (zh) | 传输http报文的方法、编码装置和解码装置 | |
CN101958835B (zh) | 一种数据传输方法以及逻辑网络适配器 | |
WO2021036189A1 (zh) | Rdma数据发送及接收方法、电子设备及可读存储介质 | |
CN109379342B (zh) | 基于udp网络协议的上位机与dsp数据传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181221 |