CN112751933A - 一种基于socket连接的数据传输方法 - Google Patents
一种基于socket连接的数据传输方法 Download PDFInfo
- Publication number
- CN112751933A CN112751933A CN202011618337.0A CN202011618337A CN112751933A CN 112751933 A CN112751933 A CN 112751933A CN 202011618337 A CN202011618337 A CN 202011618337A CN 112751933 A CN112751933 A CN 112751933A
- Authority
- CN
- China
- Prior art keywords
- socket
- connection
- data transmission
- pool
- objects
- 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.)
- Granted
Links
Images
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
- 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
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Abstract
本发明涉及一种基于socket连接的数据传输方法,包括以下步骤:构建socket对象连接池,创建多个socket对象放入连接池中;初始化连接池中多个socket对象,并保持连接状态;当需要执行数据传输任务时,则检查连接池是否已被初始化,若检查判断为是,则根据数据传输任务的数量,从连接池中对应取出socket对象,通过socket对象完成对应任务的数据传输,待数据传输完成后,将该socket对象返回至连接池中,否则返回重新初始化。与现有技术相比,本发明通过将多个socket对象放入连接池中,并对socket对象进行初始化、使socket对象保持连接状态,能够适用于高并发场景下的多数据传输任务,实现持续有效发送数据的目的,且在并发低时,能够低功耗运行,不占用过多资源。
Description
技术领域
本发明涉及计算机通信及软件技术领域,尤其是涉及一种基于socket连接的数据传输方法。
背景技术
在以TCP协议为主的传输协议中,socket(套接字)是TCP/IP传输的具体实现方式,socket对TCP/IP进行了抽象,通过形成几个基本的函数接口,以实现数据传输,基于此,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。
在socket实现过程中,传统多数使用socket短连接,即在有数据需要交互时,建立一个TCP连接,数据完成发送后则断开此TCP连接。这一过程中,需要进行TCP的三次握手和四次挥手,一次TCP请求的建立以及关闭则至少需要7次通信,这还不包括数据的通信。因此Socket短连接开销较大且数据传输速率较慢,不适用于高并发场景。
为此,在socket短连接基础上,出现了socket长连接机制,以实现在一个TCP连接上可以连续发送多个数据包的目的,在TCP连接保持期间,如果没有数据包发送,则需要发送检测包以维持此连接。socket长连接能够有效改善socket短连接的不足,在频繁操作、点对点通讯中能够发挥重要作用。但是socket长连接由于只有一个连接,在性能方面,还是不能支持高并发场景。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于socket连接的数据传输方法,以适用于高并发场景,且能保证数据高效传输。
本发明的目的可以通过以下技术方案来实现:一种基于socket连接的数据传输方法,包括以下步骤:
S1、构建socket对象连接池,创建多个socket对象放入连接池中;
S2、初始化连接池中多个socket对象,并保持连接状态;
S3、当需要执行数据传输任务时,则检查连接池是否已被初始化,若检查判断为是,则执行步骤S4,否则返回步骤S2重新初始化;
S4、根据数据传输任务的数量,从连接池中对应取出socket对象,通过socket对象完成对应任务的数据传输,待数据传输完成后,将该socket对象返回至连接池中。
进一步地,所述连接池具体为GenericObjectPool对象池。
进一步地,所述连接池中socket对象的数量大于或等于5。
进一步地,所述步骤S1在构建socket对象连接池时,分别设置资源耗尽阻塞属性、获取资源时阻塞的最大时间、最小空闲连接数、最大空闲连接数、最大活跃连接数、逐出连接的最小空闲时间、运行逐出线程、逐出扫描时间间隔、回收空闲连接数以及对象连接有效性检测线程。
进一步地,所述对象连接有效性检测线程具体是在创建socket对象时关闭;在获取socket对象时开启;在清理空闲对象时,仅针对未过期的socket对象开启;在返回socket对象时开启。
进一步地,所述步骤S2初始化socket对象时,分别设置连接超时时间、读取超时时间以及长连接声明属性,并关闭Nagle算法。Nagle算法的基本定义是任意时刻,最多只能有一个未被确认的小段,Nagle算法的目的是为了尽可能发送大块数据,避免网络中充斥着许多小数据块。
进一步地,所述步骤S2具体包括以下步骤:
S21、初始化连接池中多个socket对象;
S22、对连接池中每个socket对象建立与服务器的连接,若在连接超时时间内未连接成功,则表明该socket对象第一次连接失败,执行步骤S23,否则表明该socket对象第一次连接成功,保持该socket对象的连接状态;
S23、对该socket对象重新建立与服务器的连接,若在连接超时时间内未连接成功,则表明该socket对象第二次连接失败,需返回该socket对象,否则表明该socket对象第二次连接成功,保持该socket对象的连接状态。
进一步地,所述步骤S3具体是通过双重检查锁的方式,以检查连接池是否已被初始化,目的是为了防止高并发场景下连接池被多次初始化处理。
进一步地,所述步骤S4具体包括以下步骤:
S41、根据数据传输任务的数量,从连接池中对应取出socket对象,若取出成功,则执行步骤S42,若取出失败,则检测该socket对象的有效性,并对连接池中的空闲socket对象进行清除操作,若检测为有效,则将该socket对象返回至连接池内,若检测为无效,则销毁该socket对象;
S42、利用取出成功的socket对象进行相应任务的数据传输,若数据传输成功,则执行步骤S44,否则执行步骤S43;
S43、将数据传输失败的socket对象返回至连接池,并对连接池中的空闲socket对象进行清除操作,之后返回步骤S41重新获取socket对象;
S44、将数据传输成功的socket对象返回至连接池,若返回成功,则完成当前数据传输任务,否则对该socket对象进行有效性检测,并对连接池中的空闲socket对象进行清除操作,若检测为有效,则将该socket对象返回至连接池内,若检测为无效,则销毁该socket对象。
进一步地,所述步骤S43的过程仅执行一次。
与现有技术相比,本发明具有以下优点:
一、本发明通过构建连接池,以将创建的多个socket对象放入连接池中,并通过对多个socket对象进行初始化处理、保持连接状态,在高并发任务场景下,只需从连接池中对应取出socket对象,即可同时完成多个数据传输任务,实现高并发场景下持续有效传输数据的目的。
二、本发明在对socket对象进行初始化处理时,通过设置资源耗尽阻塞属性,当被依赖的服务由于某些故障而响应极慢时,能够有效避免大量线程阻塞导致的服务线程耗尽以及数据丢失。
三、本发明在对socket对象建立连接时,通过设置重连接机制,使得第一次建立连接失败后,能够自动重新进行第二次连接,以此有效降低无效连接的发生几率,保证后续数据传输的可靠执行。
四、本发明在获取socket对象、数据传输以及返回socket对象时,通过对socket对象进行有效性监测,并清除连接池内所有空闲socket对象,能够降低下次取出socket对象发生异常的概率,且能提高整个连接池的利用效率,在低并发场景下,能够保证低功耗运行,不会占用过多资源。
附图说明
图1为本发明的方法流程示意图;
图2为实施例的应用过程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
一种基于socket连接的数据传输方法,如图1所示,包括以下步骤:
S1、构建socket对象连接池,创建多个socket对象放入连接池中,本实施例中,连接池选用GenericObjectPool对象池,连接池中socket对象的数量大于或等于5,在具体构建连接池时,分别设置资源耗尽阻塞属性、获取资源时阻塞的最大时间、最小空闲连接数、最大空闲连接数、最大活跃连接数、逐出连接的最小空闲时间、运行逐出线程、逐出扫描时间间隔、回收空闲连接数以及对象连接有效性检测线程,其中,对象连接有效性检测线程具体是在创建socket对象时关闭;在获取socket对象时开启;在清理空闲对象时,仅针对未过期的socket对象开启;在返回socket对象时开启;
S2、初始化连接池中多个socket对象,并保持连接状态,在初始化socket对象时,分别设置连接超时时间、读取超时时间以及长连接声明属性,并关闭Nagle算法,在完成对socket对象的初始化操作后,对连接池中每个socket对象建立与服务器的连接,若在连接超时时间内连接成功,则表明该socket对象第一次连接成功,保持该socket对象的连接状态;
若在连接超时时间内未连接成功,则表明该socket对象第一次连接失败,需要对该socket对象重新建立与服务器的连接,若在连接超时时间内未连接成功,则表明该socket对象第二次连接失败,需返回该socket对象,否则表明该socket对象第二次连接成功,保持该socket对象的连接状态;
S3、当需要执行数据传输任务时,则检查连接池是否已被初始化,若检查判断为是,则执行步骤S4,否则返回步骤S2重新初始化,具体是通过双重检查锁的方式,以检查连接池是否已被初始化,目的是为了防止高并发场景下连接池被多次初始化处理;
S4、根据数据传输任务的数量,从连接池中对应取出socket对象,通过socket对象完成对应任务的数据传输,待数据传输完成后,将该socket对象返回至连接池中,具体的:
首先根据数据传输任务的数量,从连接池中对应取出socket对象,若取出成功,则利用取出成功的socket对象进行相应任务的数据传输,若取出失败,则检测该socket对象的有效性,并对连接池中的空闲socket对象进行清除操作,若检测为有效,则将该socket对象返回至连接池内,若检测为无效,则销毁该socket对象;
若数据传输成功,则将数据传输成功的socket对象返回至连接池,若返回成功,则完成当前数据传输任务,否则对该socket对象进行有效性检测,并对连接池中的空闲socket对象进行清除操作,若检测为有效,则将该socket对象返回至连接池内,若检测为无效,则销毁该socket对象。
若数据传输不成功,则将数据传输失败的socket对象返回至连接池,并对连接池中的空闲socket对象进行清除操作,之后重新获取一次socket对象以完成数据传输任务。
本实施例应用上述方法,使用GenericObjectPool作为socket对象连接池,初始化5个socket连接对象并保持连接状态,在需要执行数据传输任务时,只需从连接池中取出socket对象进行数据传输即可。在高并发场景下,若5个socket对象不够使用,则可继续增加socket对象连接,以保持数据传输。
具体实现步骤如下:
(1)需要与服务端发送数据交互时,检查GenericObjectPool是否已初始化。
(2)若未初始化,则初始化GenericObjectPool<Socket>。
(3)若已初始化完成,则从池中取出一个socket资源。
(4)获取成功后开始发送数据。
(5)数据完成后,检查socket连接有效性,若有效则返回池中。
(6)若数据发送其中出现异常,则检查socket连接是否有效,若有效则返回池中,并尝试重新获取,最多2次。
上述步骤还包括如下特点:
在上述步骤(1)(2)中对于连接池的检查增加了双重检查锁,保证在高并发情况下,连接池只会被初始化一次;
在上述步骤(2)中对GenericObjectPool设置了资源耗尽时阻塞以防止数据丢失,设置获取资源时阻塞的最大时间,最小空闲连接数,设置定时扫描减少无用连接和在对连接对象进行清理时,检测池内对象是否仍然有效;
在上述步骤(2)中,池中初始化socket对象时,对每个对象设置KeepAlive声明为长连接,并设置关闭Nagle算法,在socket建立连接时增加重试机制,在第一次连接失败时,自动再次重试连接一次;
在上述步骤(6)中,若在获取socket对象时、数据交互时、归还socket对象时若发生异常,则清除池中所有空闲连接对象,以减少下次发生异常的可能性。
本发明通过构建一个socket长连接池,能够在高并发情况下,发挥TCP连接的优势,在并发高时,能够持续有效的发送数据;在并发低时,能够低功耗运行,不占用过多资源。
如图1所示,以一次和外部系统的交互为例,当有一个需要发送到外部系统的请求信息开始处理后,首先通过双重检查锁的方式,检查连接池是否已被初始化,以防止多请求同时检查时发生初始化多个连接池实例的现象;
在未初始化时,创建GenericObjectPool<Socket>,创建时设置资源耗尽时阻塞属性,获取资源时阻塞的最大时间2000毫秒,设置最小空闲连接数5个,设置最大空闲连接数100,设置最大活跃连接数100,设置逐出连接的最小空闲时间30秒,设置运行逐出线程,逐出扫描的时间间隔1分钟,设置每次回收空闲连接的数量5,关闭创建资源时检测有效性,开启获取资源时检测有效性,设置在进行后台对象清理时,对还没有过期的池内对象进行有效性检查;
连接池创建后,初始化池内socket对象,连接超时时间设置2000毫秒,读取超时时间设置5000毫秒,设置KeepAlive属性(声明为长连接),并关闭Nagle算法;
socket对象创建后完成,尝试连接服务器,若2秒内未连接成功,则重试一次。两次均未连接成功则返回当前socket对象;
连接池初始化完成,从池内取出一个socket对象,若取出失败,则校验此对象有效性,若无效则销毁;
成功获取socket对象,开始进行数据交互,若期间运行异常,则将此连接返回给连接池,并清除连接池内所有空闲连接,并重新获取对象和数据交互;
数据成功返回后,将socket对象返回到连接池内,返回服务器返回数据,若返回失败,则校验此对象有效性,若无效则销毁。
综上所述,在初始化GenericObjectPool<Socket>时,设置maxWait属性,该属性设置后,可以避免被依赖的服务由于某些故障而响应极慢时,导致大量线程阻塞,导致服务线程耗尽;在socket进行tcp连接时增加重连机制,在第一次连接失败时,可以自动重新连接一次,降低无效连接产生几率;在获取socket对象时、数据交互时、归还socket对象时若发生异常,通过清除连接池内所有空闲对象,有助于减少取出下一socket对象仍然失败的几率,提高连接池利用效率。
Claims (10)
1.一种基于socket连接的数据传输方法,其特征在于,包括以下步骤:
S1、构建socket对象连接池,创建多个socket对象放入连接池中;
S2、初始化连接池中多个socket对象,并保持连接状态;
S3、当需要执行数据传输任务时,则检查连接池是否已被初始化,若检查判断为是,则执行步骤S4,否则返回步骤S2重新初始化;
S4、根据数据传输任务的数量,从连接池中对应取出socket对象,通过socket对象完成对应任务的数据传输,待数据传输完成后,将该socket对象返回至连接池中。
2.根据权利要求1所述的一种基于socket连接的数据传输方法,其特征在于,所述连接池具体为GenericObjectPool对象池。
3.根据权利要求1所述的一种基于socket连接的数据传输方法,其特征在于,所述连接池中socket对象的数量大于或等于5。
4.根据权利要求1所述的一种基于socket连接的数据传输方法,其特征在于,所述步骤S1在构建socket对象连接池时,分别设置资源耗尽阻塞属性、获取资源时阻塞的最大时间、最小空闲连接数、最大空闲连接数、最大活跃连接数、逐出连接的最小空闲时间、运行逐出线程、逐出扫描时间间隔、回收空闲连接数以及对象连接有效性检测线程。
5.根据权利要求4所述的一种基于socket连接的数据传输方法,其特征在于,所述对象连接有效性检测线程具体是在创建socket对象时关闭;在获取socket对象时开启;在清理空闲对象时,仅针对未过期的socket对象开启;在返回socket对象时开启。
6.根据权利要求1所述的一种基于socket连接的数据传输方法,其特征在于,所述步骤S2初始化socket对象时,分别设置连接超时时间、读取超时时间以及长连接声明属性,并关闭Nagle算法。
7.根据权利要求6所述的一种基于socket连接的数据传输方法,其特征在于,所述步骤S2具体包括以下步骤:
S21、初始化连接池中多个socket对象;
S22、对连接池中每个socket对象建立与服务器的连接,若在连接超时时间内未连接成功,则表明该socket对象第一次连接失败,执行步骤S23,否则表明该socket对象第一次连接成功,保持该socket对象的连接状态;
S23、对该socket对象重新建立与服务器的连接,若在连接超时时间内未连接成功,则表明该socket对象第二次连接失败,需返回该socket对象,否则表明该socket对象第二次连接成功,保持该socket对象的连接状态。
8.根据权利要求1所述的一种基于socket连接的数据传输方法,其特征在于,所述步骤S3具体是通过双重检查锁的方式,以检查连接池是否已被初始化,目的是为了防止高并发场景下连接池被多次初始化处理。
9.根据权利要求5所述的一种基于socket连接的数据传输方法,其特征在于,所述步骤S4具体包括以下步骤:
S41、根据数据传输任务的数量,从连接池中对应取出socket对象,若取出成功,则执行步骤S42,若取出失败,则检测该socket对象的有效性,并对连接池中的空闲socket对象进行清除操作,若检测为有效,则将该socket对象返回至连接池内,若检测为无效,则销毁该socket对象;
S42、利用取出成功的socket对象进行相应任务的数据传输,若数据传输成功,则执行步骤S44,否则执行步骤S43;
S43、将数据传输失败的socket对象返回至连接池,并对连接池中的空闲socket对象进行清除操作,之后返回步骤S41重新获取socket对象;
S44、将数据传输成功的socket对象返回至连接池,若返回成功,则完成当前数据传输任务,否则对该socket对象进行有效性检测,并对连接池中的空闲socket对象进行清除操作,若检测为有效,则将该socket对象返回至连接池内,若检测为无效,则销毁该socket对象。
10.根据权利要求9所述的一种基于socket连接的数据传输方法,其特征在于,所述步骤S43的过程仅执行一次。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011618337.0A CN112751933B (zh) | 2020-12-30 | 2020-12-30 | 一种基于socket连接的数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011618337.0A CN112751933B (zh) | 2020-12-30 | 2020-12-30 | 一种基于socket连接的数据传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112751933A true CN112751933A (zh) | 2021-05-04 |
CN112751933B CN112751933B (zh) | 2023-05-05 |
Family
ID=75650178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011618337.0A Active CN112751933B (zh) | 2020-12-30 | 2020-12-30 | 一种基于socket连接的数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112751933B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523531A (zh) * | 2011-12-08 | 2012-06-27 | 深圳市同洲视讯传媒有限公司 | 视频点播系统中处理会话的接入实体及方法 |
CN102957627A (zh) * | 2012-11-19 | 2013-03-06 | 浪潮电子信息产业股份有限公司 | 一种基于tcp长连接的提高数据传输效率的方法 |
CN104239365A (zh) * | 2013-06-24 | 2014-12-24 | 北京新媒传信科技有限公司 | 一种获取数据库连接池中连接的方法和数据库连接池 |
CN109684397A (zh) * | 2018-12-24 | 2019-04-26 | 广东亿迅科技有限公司 | 基于influx dB数据库连接池和管理方法 |
CN110266660A (zh) * | 2019-06-03 | 2019-09-20 | 上海金大师网络科技有限公司 | 基于epoll模型的jctp实现系统、方法及介质 |
CN110427271A (zh) * | 2019-07-08 | 2019-11-08 | 金蝶汽车网络科技有限公司 | 建立连接的方法、装置、存储介质和计算机设备 |
CN111343252A (zh) * | 2020-02-13 | 2020-06-26 | 深圳壹账通智能科技有限公司 | 基于http2协议的高并发数据传输方法及相关设备 |
-
2020
- 2020-12-30 CN CN202011618337.0A patent/CN112751933B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523531A (zh) * | 2011-12-08 | 2012-06-27 | 深圳市同洲视讯传媒有限公司 | 视频点播系统中处理会话的接入实体及方法 |
CN102957627A (zh) * | 2012-11-19 | 2013-03-06 | 浪潮电子信息产业股份有限公司 | 一种基于tcp长连接的提高数据传输效率的方法 |
CN104239365A (zh) * | 2013-06-24 | 2014-12-24 | 北京新媒传信科技有限公司 | 一种获取数据库连接池中连接的方法和数据库连接池 |
CN109684397A (zh) * | 2018-12-24 | 2019-04-26 | 广东亿迅科技有限公司 | 基于influx dB数据库连接池和管理方法 |
CN110266660A (zh) * | 2019-06-03 | 2019-09-20 | 上海金大师网络科技有限公司 | 基于epoll模型的jctp实现系统、方法及介质 |
CN110427271A (zh) * | 2019-07-08 | 2019-11-08 | 金蝶汽车网络科技有限公司 | 建立连接的方法、装置、存储介质和计算机设备 |
CN111343252A (zh) * | 2020-02-13 | 2020-06-26 | 深圳壹账通智能科技有限公司 | 基于http2协议的高并发数据传输方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112751933B (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7093154B2 (en) | Critical adapter local error handling | |
JP3932994B2 (ja) | サーバ引継システムおよびその方法 | |
US20070233855A1 (en) | Adaptible keepalive for enterprise extenders | |
KR101419579B1 (ko) | 서버 고장 상황에서 클라이언트 어플리케이션의 더 빠른 복구를 가능하게 하는 방법 | |
CN111917451B (zh) | 一种数据传输方法、装置、卫星模块及存储介质 | |
CN112202872A (zh) | 一种数据转发方法、api网关及消息服务系统 | |
CN103973424A (zh) | 缓存系统中的故障解决方法和设备 | |
US20070233822A1 (en) | Decrease recovery time of remote TCP client applications after a server failure | |
CN114764380A (zh) | 一种基于etcd的分布式集群控制方法和装置 | |
CN113986501A (zh) | 实时数据库api无中断调用方法、系统、存储介质及服务器 | |
CN112860408A (zh) | 一种云真机中的进程保活方法、装置、系统及存储介质 | |
CN102521060A (zh) | 基于看门狗本地检测技术的高可用集群系统假死解决方法 | |
CN113946487A (zh) | 一种故障场景下自主服务降级恢复的实现方法及系统 | |
CN112702403B (zh) | 一种基于重新联网的智能业务连接方法及通讯模块 | |
CN101951327B (zh) | 一种iSCSI网络系统以及检测网络故障的方法 | |
CN112751933B (zh) | 一种基于socket连接的数据传输方法 | |
JP2016066303A (ja) | サーバ装置、冗長構成サーバシステム、情報引継プログラム及び情報引継方法 | |
CN114125021B (zh) | 一种基于Netty消息驱动的终端信息发布系统 | |
US11812487B2 (en) | Method, device, extender, and computer medium for automatically restoring connection | |
CN113220462B (zh) | 一种基于边缘计算的集中式故障检测方法 | |
US7672239B1 (en) | System and method for conducting fast offloading of a connection onto a network interface card | |
CN114422428A (zh) | 服务节点的重启方法、装置、电子设备及存储介质 | |
CN108667682B (zh) | 基于安全网关深度包检测的连接同步方法、装置及介质 | |
US8842583B2 (en) | System and method for maintaining data connectivity over a satellite link | |
CN102546233A (zh) | 一种高可用集群中串口心跳的实现方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |