IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> C++实现单个客户端连接多个服务器(TCP) -> 正文阅读

[网络协议]C++实现单个客户端连接多个服务器(TCP)

? ? ? ? 最近,根据项目需求,需要实现一个工业控制管理系统。该管理系统需要去连接大量的用于工业控制的下位机。下位机作为TCP服务端,开放一个固定的端口,等待管理系统的连接(下位机的这种网络模式不可更改)。管理系统需要连接并管理好这些下位机,实时与下位机进行数据通信。该项目的难点在于下位机的数量很多(少则数百,多则数千)。

? ? ? ? ?管理系统作为TCP连接的客户端,主动去与下位机(服务端)建立连接。对于每一个下位机,?管理系统(客户端)都需要new一个socket,与服务端的建立连接,连接成功后,管理系统需要保存好这个socket,以便需要时进行通信(如果不保存这个socket,每次通信时都需要先建立TCP连接,那么实时性会大打折扣)。假设有两千个下位机,管理系统就需要维护两千个socket,那么如何维护好这么多的socket呢?对每条连接都建立一个线程?下位机的数量是个位数的情况下还算凑合,两千个线程?开什么玩笑,就算你同意计算机也不会同意的。

? ? ? ? 如果管理系统作为服务端,开放某个TCP端口,下位机作为客户端,主动与服务端建立连接,那么,这就是传统的C/S模式,开发这种系统对于初学者也应该是小菜一碟。在传统的C/S模式下,服务端管理着大量的socket,每个socket对应着一个客户端。常见的网络模型有select模型,但这种模型管理的socket数量有限制,不超过1024个,而且在socket较多时,基于轮询机制的select模型会力不从心,这时就可以用大名鼎鼎的ICOP模型了。可是,该项目中的下位机只能作为服务端,管理系统只能作为客户端,ICOP模型还能排上用场吗?答案是:可以!

? ? ? ? 如果对ICOP的机制比较精通的话,就会发现,和完成端口绑定的socket并没有区分socket是服务端的还是客户端的,只要把一个socket绑定到完成端口上,在这个socket上投递recv操作即可接收网络数据。这就是我在研究透IOCP机制的基础上找到的思路。

? ? ? ? 各位大侠还有什么更好的解决方案,可以给我留言。需要源码的朋友,这里不方便提供(项目太大),但我可以提供关键步骤的代码,建议深入研究一下IOCP的工作机制,否则可能无处下手。459238972@qq.com

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-03 11:34:09  更:2021-08-03 11:34:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:46:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码