CN105119926B - 一种基于Socket连接的多通道双工通讯方法 - Google Patents
一种基于Socket连接的多通道双工通讯方法 Download PDFInfo
- Publication number
- CN105119926B CN105119926B CN201510562879.3A CN201510562879A CN105119926B CN 105119926 B CN105119926 B CN 105119926B CN 201510562879 A CN201510562879 A CN 201510562879A CN 105119926 B CN105119926 B CN 105119926B
- Authority
- CN
- China
- Prior art keywords
- client
- socket
- server end
- address
- adapter
- 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
Classifications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L5/00—Arrangements affording multiple use of the transmission path
- H04L5/14—Two-way operation using the same type of signal, i.e. duplex
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种基于Socket连接的多通道双工通讯方法,包括步骤:分别创建适配器、服务器端Socket容器和客户端Socket容器;适配器分别与服务器端Socket容器和客户端Socket容器连接;其中,适配器用于记录需建立Socket连接的服务器端地址和客户端地址的匹配关系;服务器端Socket容器用于存储已被适配器记录匹配关系的服务器端套接字;客户端Socket容器用于存储已被适配器记录匹配关系的客户端套接字。优点为:通过简单的方式即可实现服务器端和客户端的多通道双工通讯,具有Socket连接的管理效率高、资源占用量少的优点。
Description
技术领域
本发明属于通讯技术领域,具体涉及一种基于Socket连接的多通道双工通讯方法。
背景技术
现阶段,服务器端和客户端之间的Socket连接建立过程为:
(1)服务器端侦听某一端口,等待客户端的Socket连接请求;
(2)客户端向服务器端发送Socket连接请求,其中,该Socket连接请求携带有客户端的地址和端口号;
(3)当服务器端监听到客户端所发送的连接请求时,服务器端创建一个新的线程,通过线程管理服务器端和客户端正式建立的Socket连接,服务器端在建立Socket连接后,客户端与服务器端即可进行基于TCP/IP的通讯。
然而,在Socket通讯类软件研发的过程中,需要频繁的针对Socket连接进行创建、使用、销毁等操作;而每建立一个Socket连接,服务器端均需要启动一个线程,对该Socket连接进行管理,由此导致Socket连接的管理效率低下,占用了服务器端大量的CPU和内存等资源。
发明内容
针对现有技术存在的缺陷,本发明提供一种基于Socket连接的多通道双工通讯方法,可有效解决上述问题。
本发明采用的技术方案如下:
本发明提供一种基于Socket连接的多通道双工通讯方法,包括以下步骤:
步骤1:分别创建适配器、服务器端Socket容器和客户端Socket容器;所述适配器分别与所述服务器端Socket容器和所述客户端Socket容器连接;
其中,所述适配器用于记录需建立Socket连接的服务器端地址和客户端地址的匹配关系;
所述服务器端Socket容器用于存储已被所述适配器记录匹配关系的服务器端套接字,其中,所述服务器端套接字包含所述服务器端地址;
所述客户端Socket容器用于存储已被所述适配器记录匹配关系的客户端套接字,其中,所述客户端套接字包含所述客户端地址;
步骤2,每当所述适配器已记录服务器端地址和客户端地址的匹配关系之后,在已建立匹配关系的服务器端创建服务器端发送队列和服务器接收队列;
在已建立匹配关系的客户端创建客户端发送队列和客户端接收队列;
步骤3,所述适配器对所述服务器端发送队列和所述客户端发送队列进行监听,每当监听到所述客户端发送队列中存在所述客户端添加的待发送客户端消息时,执行步骤4;每当监听到所述服务器端发送队列中存在所述服务器端添加的待发送服务器端消息时,执行步骤5;
步骤4,所述适配器对所述待发送客户端消息进行解析,提取到该待发送客户端消息所携带的客户端地址和服务器端地址;
然后,所述适配器判断提取到的客户端地址和服务器端地址是否已建立匹配关系,如果没有,则结束流程;如果有,则所述适配器对所述服务器端Socket容器进行查找,得到与本次匹配关系对应的服务器端套接字;所述服务器端套接字将待发送客户端消息发送到对应的服务器端接收队列,使对应的服务器端通过读取自身的服务器端接收队列,接收到来自客户端的消息;
步骤5,所述适配器对所述待发送服务器端消息进行解析,提取到该待发送服务器端消息所携带的客户端地址和服务器端地址;
然后,所述适配器判断提取到的客户端地址和服务器端地址是否已建立匹配关系,如果没有,则结束流程;如果有,则所述适配器对所述客户端Socket容器进行查找,得到与本次匹配关系对应的客户端套接字;所述客户端套接字将待发送服务器端消息发送到对应的客户端接收队列,使对应的客户端通过读取自身的客户端接收队列,接收到来自服务器端的消息。
优选的,步骤1中,所述适配器用于记录需建立Socket连接的服务器端地址和客户端地址的匹配关系,具体指:
在每台服务器端部署唯一对应的链接***,通过所述链接***对服务器端的地址进行监听,当监听到服务器端接收到来自客户端的Socket连接建立请求时,所述链接***对该Socket连接建立请求进行解析,获得客户端地址以及服务器端地址;
然后,所述链接***将所获得的客户端地址以及服务器端地址发送给所述适配器;
所述适配器记录需建立Socket连接的服务器端地址和客户端地址的匹配关系。
优选的,所述客户端地址指客户端IP地址和/或端口号;所述服务器端地址指服务器端IP地址和/或端口号。
优选的,还包括:
创建Socket清理器;所述Socket清理器轮询所述服务器端Socket容器和所述客户端Socket容器,将所述服务器端Socket容器和所述客户端Socket容器中生命周期已超期的Socket连接所对应的套接字删除。
本发明的有益效果如下:
本发明提供的基于Socket连接的多通道双工通讯方法具有以下优点:
通过简单的方式即可实现服务器端和客户端的多通道双工通讯,具有Socket连接的管理效率高、资源占用量少的优点。
附图说明
图1为本发明提供的基于Socket连接的多通道双工通讯方法的流程示意图。
具体实施方式
以下结合附图对本发明进行详细说明:
结合图1,本发明提供一种基于Socket连接的多通道双工通讯方法,包括以下步骤:
步骤1:分别创建适配器、服务器端Socket容器和客户端Socket容器;适配器分别与服务器端Socket容器和客户端Socket容器连接。
(1)适配器
适配器用于记录需建立Socket连接的服务器端地址和客户端地址的匹配关系。
在具体实现上,适配器可采用以下方式记录需建立Socket连接的服务器端地址和客户端地址的匹配关系:
在每台服务器端部署唯一对应的链接***,通过链接***对服务器端的地址进行监听,当监听到服务器端接收到来自客户端的Socket连接建立请求时,链接***对该Socket连接建立请求进行解析,获得客户端地址以及服务器端地址;
然后,链接***将所获得的客户端地址以及服务器端地址发送给适配器;
适配器记录需建立Socket连接的服务器端地址和客户端地址的匹配关系。
(2)服务器端Socket容器和客户端Socket容器
服务器端Socket容器用于存储已被适配器记录匹配关系的服务器端套接字,其中,服务器端套接字包含服务器端地址;
客户端Socket容器用于存储已被适配器记录匹配关系的客户端套接字,其中,客户端套接字包含客户端地址;
本发明中,客户端地址指客户端IP地址和/或端口号;服务器端地址指服务器端IP地址和/或端口号。
步骤2,每当适配器已记录服务器端地址和客户端地址的匹配关系之后,在已建立匹配关系的服务器端创建服务器端发送队列和服务器接收队列;
在已建立匹配关系的客户端创建客户端发送队列和客户端接收队列;
步骤3,适配器对服务器端发送队列和客户端发送队列进行监听,每当监听到客户端发送队列中存在客户端添加的待发送客户端消息时,执行步骤4;每当监听到服务器端发送队列中存在服务器端添加的待发送服务器端消息时,执行步骤5;
步骤4,适配器对待发送客户端消息进行解析,提取到该待发送客户端消息所携带的客户端地址和服务器端地址;
然后,适配器判断提取到的客户端地址和服务器端地址是否已建立匹配关系,如果没有,则结束流程;如果有,则适配器对服务器端Socket容器进行查找,得到与本次匹配关系对应的服务器端套接字;服务器端套接字将待发送客户端消息发送到对应的服务器端接收队列,使对应的服务器端通过读取自身的服务器端接收队列,接收到来自客户端的消息;
步骤5,适配器对待发送服务器端消息进行解析,提取到该待发送服务器端消息所携带的客户端地址和服务器端地址;
然后,适配器判断提取到的客户端地址和服务器端地址是否已建立匹配关系,如果没有,则结束流程;如果有,则适配器对客户端Socket容器进行查找,得到与本次匹配关系对应的客户端套接字;客户端套接字将待发送服务器端消息发送到对应的客户端接收队列,使对应的客户端通过读取自身的客户端接收队列,接收到来自服务器端的消息。
在本步骤中,通过在客户端增加发送队列,在服务器端增加发送队列,然后,适配器通过对客户端和服务器端的发送队列进行监听,进而实现客户端和服务器端的双工通讯。因此,采用消息队列机制,可有效的控制了客户端和服务器端大量数据涌入的问题,有效的扩充了适配器的处理性能,加大了适配器数据的吞吐量。
另外,本发明中,为避免客户端动态地址导致的服务器内存溢出的问题,还包括:创建Socket清理器;Socket清理器轮询服务器端Socket容器和客户端Socket容器,将服务器端Socket容器和客户端Socket容器中生命周期已超期的Socket连接所对应的套接字删除,Socket清理器的运行,可采用独立线程运行。
因此,本发明通过建立几个部件,包括:适配器、服务器端Socket容器和客户端Socket容器,即可有效的管理Socket连接,实现服务器端和客户端的双工通讯,合理利用计算机资源,摒弃了传统Socket连接常用的多线程管理方式。另外,本发明通过服务器端Socket容器和客户端Socket容器对Socket连接的整个生命周期进行了有效的管理,并引入了队列的工作机制,可在一定程度上解决传统的单线程管理方式有可能对瞬时大量Socket连接有一定的局限性的问题。
综上,本发明提供的基于Socket连接的多通道双工通讯方法具有以下优点:
通过简单的方式即可实现服务器端和客户端的多通道双工通讯,具有Socket连接的管理效率高、资源占用量少的优点。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (4)
1.一种基于Socket连接的多通道双工通讯方法,其特征在于,包括以下步骤:
步骤1:分别创建适配器、服务器端Socket容器和客户端Socket容器;所述适配器分别与所述服务器端Socket容器和所述客户端Socket容器连接;
其中,所述适配器用于记录需建立Socket连接的服务器端地址和客户端地址的匹配关系;
所述服务器端Socket容器用于存储已被所述适配器记录匹配关系的服务器端套接字,其中,所述服务器端套接字包含所述服务器端地址;
所述客户端Socket容器用于存储已被所述适配器记录匹配关系的客户端套接字,其中,所述客户端套接字包含所述客户端地址;
步骤2,每当所述适配器已记录服务器端地址和客户端地址的匹配关系之后,在已建立匹配关系的服务器端创建服务器端发送队列和服务器端接收队列;
在已建立匹配关系的客户端创建客户端发送队列和客户端接收队列;
步骤3,所述适配器对所述服务器端发送队列和所述客户端发送队列进行监听,每当监听到所述客户端发送队列中存在所述客户端添加的待发送客户端消息时,执行步骤4;每当监听到所述服务器端发送队列中存在所述服务器端添加的待发送服务器端消息时,执行步骤5;
步骤4,所述适配器对所述待发送客户端消息进行解析,提取到该待发送客户端消息所携带的客户端地址和服务器端地址;
然后,所述适配器判断提取到的客户端地址和服务器端地址是否已建立匹配关系,如果没有,则结束流程;如果有,则所述适配器对所述服务器端Socket容器进行查找,得到与本次匹配关系对应的服务器端套接字;所述服务器端套接字将待发送客户端消息发送到对应的服务器端接收队列,使对应的服务器端通过读取自身的服务器端接收队列,接收到来自客户端的消息;
步骤5,所述适配器对所述待发送服务器端消息进行解析,提取到该待发送服务器端消息所携带的客户端地址和服务器端地址;
然后,所述适配器判断提取到的客户端地址和服务器端地址是否已建立匹配关系,如果没有,则结束流程;如果有,则所述适配器对所述客户端Socket容器进行查找,得到与本次匹配关系对应的客户端套接字;所述客户端套接字将待发送服务器端消息发送到对应的客户端接收队列,使对应的客户端通过读取自身的客户端接收队列,接收到来自服务器端的消息。
2.根据权利要求1所述的基于Socket连接的多通道双工通讯方法,其特征在于,步骤1中,所述适配器用于记录需建立Socket连接的服务器端地址和客户端地址的匹配关系,具体指:
在每台服务器端部署唯一对应的链接***,通过所述链接***对服务器端的地址进行监听,当监听到服务器端接收到来自客户端的Socket连接建立请求时,所述链接***对该Socket连接建立请求进行解析,获得客户端地址以及服务器端地址;
然后,所述链接***将所获得的客户端地址以及服务器端地址发送给所述适配器;
所述适配器记录需建立Socket连接的服务器端地址和客户端地址的匹配关系。
3.根据权利要求1或2所述的基于Socket连接的多通道双工通讯方法,其特征在于,所述客户端地址指客户端IP地址和/或端口号;所述服务器端地址指服务器端IP地址和/或端口号。
4.根据权利要求1或2所述的基于Socket连接的多通道双工通讯方法,其特征在于,还包括:
创建Socket清理器;所述Socket清理器轮询所述服务器端Socket容器和所述客户端Socket容器,将所述服务器端Socket容器和所述客户端Socket容器中生命周期已超期的Socket连接所对应的套接字删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510562879.3A CN105119926B (zh) | 2015-09-07 | 2015-09-07 | 一种基于Socket连接的多通道双工通讯方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510562879.3A CN105119926B (zh) | 2015-09-07 | 2015-09-07 | 一种基于Socket连接的多通道双工通讯方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105119926A CN105119926A (zh) | 2015-12-02 |
CN105119926B true CN105119926B (zh) | 2018-01-23 |
Family
ID=54667814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510562879.3A Active CN105119926B (zh) | 2015-09-07 | 2015-09-07 | 一种基于Socket连接的多通道双工通讯方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105119926B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106452854B (zh) * | 2016-09-27 | 2019-04-26 | 南京国电南自轨道交通工程有限公司 | 一种基于多连接主备冗余的地铁综合监控***同步通讯方法 |
CN106656436B (zh) * | 2016-09-29 | 2020-05-22 | 安徽华速达电子科技有限公司 | 一种基于智能光网络单元的通信管理方法和*** |
CN109660562A (zh) * | 2019-01-30 | 2019-04-19 | 苏州德锐特成像技术有限公司 | 一种用于大数据同步的***及客户端 |
CN110198312B (zh) * | 2019-05-23 | 2021-12-24 | 北京华三通信技术有限公司 | 消息处理方法和装置 |
CN110351246A (zh) * | 2019-06-12 | 2019-10-18 | 深圳市奥克多普科技有限公司 | 服务器集群***Socket管理方法及装置 |
CN110958240A (zh) * | 2019-11-27 | 2020-04-03 | 北京数知科技股份有限公司 | 消息订阅***及方法 |
CN114726901B (zh) * | 2022-05-23 | 2022-09-02 | 安徽华云安科技有限公司 | 容器访问方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1652508A (zh) * | 2004-02-03 | 2005-08-10 | 华为技术有限公司 | 一种操作维护客户端与远程设备直接通信的方法 |
CN102035904A (zh) * | 2010-12-10 | 2011-04-27 | 北京中科大洋科技发展股份有限公司 | 一种将tcp网络通信服务端转换为客户端的方法 |
CN104683139A (zh) * | 2013-12-02 | 2015-06-03 | 成都鼎桥通信技术有限公司 | 一种通信设备的远程操作维护方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3806094B2 (ja) * | 2003-02-25 | 2006-08-09 | 株式会社東芝 | ルータ装置、ネットワークアドレス管理システム、ネットワークアドレス管理方法及びネットワークアドレス管理プログラム |
-
2015
- 2015-09-07 CN CN201510562879.3A patent/CN105119926B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1652508A (zh) * | 2004-02-03 | 2005-08-10 | 华为技术有限公司 | 一种操作维护客户端与远程设备直接通信的方法 |
CN102035904A (zh) * | 2010-12-10 | 2011-04-27 | 北京中科大洋科技发展股份有限公司 | 一种将tcp网络通信服务端转换为客户端的方法 |
CN104683139A (zh) * | 2013-12-02 | 2015-06-03 | 成都鼎桥通信技术有限公司 | 一种通信设备的远程操作维护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105119926A (zh) | 2015-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105119926B (zh) | 一种基于Socket连接的多通道双工通讯方法 | |
CN106254179B (zh) | 一种心跳包异步控制方法及装置 | |
WO2010072081A1 (zh) | 一种实现流媒体服务器大量终端接入的方法及*** | |
US8645532B2 (en) | Methods and computer program products for monitoring the contents of network traffic in a network device | |
JP2018508072A (ja) | メッセージをプッシュするための方法および装置 | |
CN106100914A (zh) | 一种云ac告警信息的推送方法及*** | |
CN101299689B (zh) | 一种在线检测的方法及邮件服务器 | |
CN103198007A (zh) | 多进程的日志输出方法及*** | |
CN104243237A (zh) | P2p流检测方法和设备 | |
CN109889567A (zh) | 支持海量设备接入的物联网平台的实现方法 | |
WO2020006903A1 (zh) | 财务数据交互方法、装置、计算机设备和存储介质 | |
CN104965810B (zh) | 多核模式下快速处理数据报文的方法及装置 | |
CN107864189A (zh) | 一种基于dpi的应用层流量负载均衡方法 | |
CN104753813B (zh) | Dma传送报文的方法 | |
CN102457494A (zh) | 一种基于sip信令提高监听成功率的方法和装置 | |
CN107391374A (zh) | 中间件自动化检查方法 | |
CN103248679A (zh) | 一种网络消息传递方法 | |
WO2017165999A1 (zh) | 网络服务实现方法、服务控制器及通信*** | |
CN111064729A (zh) | 报文的处理方法及装置、存储介质和电子装置 | |
CN106230619B (zh) | 数据发送、接收方法及装置、数据传输方法及*** | |
CN104780171A (zh) | 一种消息传送的方法、装置及*** | |
CN105025028B (zh) | 基于流量分析的ip黑洞发现方法 | |
CN103067517B (zh) | 结合重定向和主动连接的p2p缓存服务器***和实现方法 | |
CN103188355B (zh) | 一种通过预判断对报文进行动态匹配的方法 | |
CN102938793B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100101 Beijing Chaoyang District Anxiang Beilijia 11 B Block 2 Floor Patentee after: CHINA SCIENCE MAPUNIVERSE TCHNDOGY CO., LTD. Address before: 100101 Beijing Chaoyang District Anxiang Beilijia 11 B Block 2 Floor Patentee before: MAPUNI Co., Ltd. |
|
CP01 | Change in the name or title of a patent holder |