[发明专利]一种基于socket连接的数据传输方法有效
申请号: | 202011618337.0 | 申请日: | 2020-12-30 |
公开(公告)号: | CN112751933B | 公开(公告)日: | 2023-05-05 |
发明(设计)人: | 李虎;曾毅峰;魏明丽;戚荣荣 | 申请(专利权)人: | 上海浦东发展银行股份有限公司 |
主分类号: | H04L67/141 | 分类号: | H04L67/141;H04L69/16 |
代理公司: | 上海科盛知识产权代理有限公司 31225 | 代理人: | 林君如 |
地址: | 200002 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 socket 连接 数据传输 方法 | ||
1.一种基于socket连接的数据传输方法,其特征在于,包括以下步骤:
S1、构建socket对象连接池,创建多个socket对象放入连接池中;
S2、初始化连接池中多个socket对象,并保持连接状态;
S3、当需要执行数据传输任务时,则检查连接池是否已被初始化,若检查判断为是,则执行步骤S4,否则返回步骤S2重新初始化;
S4、根据数据传输任务的数量,从连接池中对应取出socket对象,通过socket对象完成对应任务的数据传输,待数据传输完成后,将该socket对象返回至连接池中;
所述步骤S1在构建socket对象连接池时,分别设置资源耗尽阻塞属性、获取资源时阻塞的最大时间、最小空闲连接数、最大空闲连接数、最大活跃连接数、逐出连接的最小空闲时间、运行逐出线程、逐出扫描时间间隔、回收空闲连接数以及对象连接有效性检测线程;
所述对象连接有效性检测线程具体是在创建socket对象时关闭;在获取socket对象时开启;在清理空闲对象时,仅针对未过期的socket对象开启;在返回socket对象时开启;
所述步骤S2初始化socket对象时,分别设置连接超时时间、读取超时时间以及长连接声明属性,并关闭Nagle算法,所述步骤S2具体包括以下步骤:
S21、初始化连接池中多个socket对象;
S22、对连接池中每个socket对象建立与服务器的连接,若在连接超时时间内未连接成功,则表明该socket对象第一次连接失败,执行步骤S23,否则表明该socket对象第一次连接成功,保持该socket对象的连接状态;
S23、对该socket对象重新建立与服务器的连接,若在连接超时时间内未连接成功,则表明该socket对象第二次连接失败,需返回该socket对象,否则表明该socket对象第二次连接成功,保持该socket对象的连接状态;
所述步骤S4具体包括以下步骤:
S41、根据数据传输任务的数量,从连接池中对应取出socket对象,若取出成功,则执行步骤S42,若取出失败,则检测该socket对象的有效性,并对连接池中的空闲socket对象进行清除操作,若检测为有效,则将该socket对象返回至连接池内,若检测为无效,则销毁该socket对象;
S42、利用取出成功的socket对象进行相应任务的数据传输,若数据传输成功,则执行步骤S44,否则执行步骤S43;
S43、将数据传输失败的socket对象返回至连接池,并对连接池中的空闲socket对象进行清除操作,之后返回步骤S41重新获取socket对象,步骤S43的过程仅执行一次;
S44、将数据传输成功的socket对象返回至连接池,若返回成功,则完成当前数据传输任务,否则对该socket对象进行有效性检测,并对连接池中的空闲socket对象进行清除操作,若检测为有效,则将该socket对象返回至连接池内,若检测为无效,则销毁该socket对象。
2.根据权利要求1所述的一种基于socket连接的数据传输方法,其特征在于,所述连接池具体为GenericObjectPool对象池。
3.根据权利要求1所述的一种基于socket连接的数据传输方法,其特征在于,所述连接池中socket对象的数量大于或等于5。
4.根据权利要求1所述的一种基于socket连接的数据传输方法,其特征在于,所述步骤S3具体是通过双重检查锁的方式,以检查连接池是否已被初始化,目的是为了防止高并发场景下连接池被多次初始化处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海浦东发展银行股份有限公司,未经上海浦东发展银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011618337.0/1.html,转载请声明来源钻瓜专利网。