ZeroMQ:不一样的套接字。

简介: 这就是为什么在服务器使用订阅服务模式或者请求应答模式绑定对应端口后,使用NetAssist 以客户端访问可以发送数据,但是在服务端和客户端都没有收到污染。

ZMQ连接和传统的TCP连接是有区别的,主要有:


● 使用多种协议,inproc(进程内)、ipc(进程间)、tcp、pgm(广播)、epgm1;

● 当客户端使用zmq_connect()时连接就已经建立了,并不要求该端点已有某个服务使用zmq_bind()进行了绑定2;

● 连接是异步的,并由一组消息队列做缓冲;3

● 连接会表现出某种消息模式,这是由创建连接的套接字类型决定的;

● 一个套接字可以有多个输入和输出连接;

● ZMQ没有提供类似zmq_accept()的函数,因为当套接字绑定至端点时它就自动开始接受连接了;

● 应用程序无法直接和这些连接打交道,因为它们是被封装在ZMQ底层的。4

1.inproc协议是ZeroMQ消息传递库中的一种协议,它是一种本地进程间通信协议。使用inproc协议,可以在同一台计算机上的不同进程之间进行高效的通信,而无需通过网络进行通信。inproc协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。inproc协议是ZeroMQ中最快的协议之一,因为它不需要通过网络进行通信,而是直接在内存中传递消息。

ipc协议是ZeroMQ消息传递库中的一种协议,它是一种进程间通信协议。使用ipc协议,可以在同一台计算机上的不同进程之间进行高效的通信,而无需通过网络进行通信。ipc协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。

tcp协议是一种网络传输协议,它是Internet协议族中的一员。tcp协议提供了一种可靠的、面向连接的、基于字节流的传输服务,它可以保证数据的可靠传输,同时还提供了流量控制和拥塞控制等功能。tcp协议是Internet上应用最广泛的协议之一,它被用于各种类型的应用程序,例如Web浏览器、电子邮件客户端、文件传输协议(FTP)客户端等。

pgm协议是ZeroMQ消息传递库中的一种协议,它是一种组播协议。使用pgm协议,可以在局域网中的多个计算机之间进行高效的通信,而无需向每个计算机单独发送消息。pgm协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。

epgm协议是ZeroMQ消息传递库中的一种协议,它是一种增强的组播协议。与pgm协议相比,epgm协议提供了更高的可靠性和更低的延迟,同时还支持多播组的动态加入和退出。epgm协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。 ↩︎


2.这也是我在使用过程中一直疑惑的问题,我使用断言命令assert监测zmq_connect的返回结果时,在我没启动服务器的情况下并没有按照预期结束,让我一度怀疑在哪里出现了错误。 ↩︎


3.同步链接和异步链接是指在网络通信中,客户端和服务器之间建立连接的方式。

同步链接是指客户端在发送请求后,必须等待服务器响应后才能继续执行后续操作。在同步链接中,客户端和服务器之间的通信是阻塞的,即客户端必须等待服务器响应后才能继续执行后续操作。同步链接通常用于需要精确控制请求和响应顺序的场景,例如在线游戏中的玩家移动操作。

异步链接是指客户端在发送请求后,不必等待服务器响应即可继续执行后续操作。在异步链接中,客户端和服务器之间的通信是非阻塞的,即客户端可以在等待服务器响应的同时继续执行后续操作。异步链接通常用于需要处理大量请求的场景,例如Web服务器中的并发请求处理。

总的来说,同步链接适用于需要精确控制请求和响应顺序的场景,而异步链接适用于需要处理大量请求的场景。

消息队列的缓冲,这里指的是相比于直接对接的TCP两端,ZMQ在这两者间增加了消息队列,加强了网络通讯效率和可靠性。以应对网路拥塞、丢包的问题。更多内容可以参考:[[网络传输中应对混沌态的链路网路怎样保证通讯效率之消息队列]] ↩︎


ZMQ连接和传统的TCP连接是有区别的,主要有:


● 使用多种协议,inproc(进程内)、ipc(进程间)、tcp、pgm(广播)、epgm1;

● 当客户端使用zmq_connect()时连接就已经建立了,并不要求该端点已有某个服务使用zmq_bind()进行了绑定2;

● 连接是异步的,并由一组消息队列做缓冲;3

● 连接会表现出某种消息模式,这是由创建连接的套接字类型决定的;

● 一个套接字可以有多个输入和输出连接;

● ZMQ没有提供类似zmq_accept()的函数,因为当套接字绑定至端点时它就自动开始接受连接了;

● 应用程序无法直接和这些连接打交道,因为它们是被封装在ZMQ底层的。4

1.inproc协议是ZeroMQ消息传递库中的一种协议,它是一种本地进程间通信协议。使用inproc协议,可以在同一台计算机上的不同进程之间进行高效的通信,而无需通过网络进行通信。inproc协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。inproc协议是ZeroMQ中最快的协议之一,因为它不需要通过网络进行通信,而是直接在内存中传递消息。

ipc协议是ZeroMQ消息传递库中的一种协议,它是一种进程间通信协议。使用ipc协议,可以在同一台计算机上的不同进程之间进行高效的通信,而无需通过网络进行通信。ipc协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。

tcp协议是一种网络传输协议,它是Internet协议族中的一员。tcp协议提供了一种可靠的、面向连接的、基于字节流的传输服务,它可以保证数据的可靠传输,同时还提供了流量控制和拥塞控制等功能。tcp协议是Internet上应用最广泛的协议之一,它被用于各种类型的应用程序,例如Web浏览器、电子邮件客户端、文件传输协议(FTP)客户端等。

pgm协议是ZeroMQ消息传递库中的一种协议,它是一种组播协议。使用pgm协议,可以在局域网中的多个计算机之间进行高效的通信,而无需向每个计算机单独发送消息。pgm协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。

epgm协议是ZeroMQ消息传递库中的一种协议,它是一种增强的组播协议。与pgm协议相比,epgm协议提供了更高的可靠性和更低的延迟,同时还支持多播组的动态加入和退出。epgm协议使用ZeroMQ的套接字来实现通信,它提供了一种简单的、可靠的、异步的消息传递机制,可以用于构建各种类型的应用程序,例如分布式系统、消息队列、事件驱动系统等。 ↩︎


2.这也是我在使用过程中一直疑惑的问题,我使用断言命令assert监测zmq_connect的返回结果时,在我没启动服务器的情况下并没有按照预期结束,让我一度怀疑在哪里出现了错误。 ↩︎


3.同步链接和异步链接是指在网络通信中,客户端和服务器之间建立连接的方式。

同步链接是指客户端在发送请求后,必须等待服务器响应后才能继续执行后续操作。在同步链接中,客户端和服务器之间的通信是阻塞的,即客户端必须等待服务器响应后才能继续执行后续操作。同步链接通常用于需要精确控制请求和响应顺序的场景,例如在线游戏中的玩家移动操作。

异步链接是指客户端在发送请求后,不必等待服务器响应即可继续执行后续操作。在异步链接中,客户端和服务器之间的通信是非阻塞的,即客户端可以在等待服务器响应的同时继续执行后续操作。异步链接通常用于需要处理大量请求的场景,例如Web服务器中的并发请求处理。

总的来说,同步链接适用于需要精确控制请求和响应顺序的场景,而异步链接适用于需要处理大量请求的场景。

消息队列的缓冲,这里指的是相比于直接对接的TCP两端,ZMQ在这两者间增加了消息队列,加强了网络通讯效率和可靠性。以应对网路拥塞、丢包的问题。更多内容可以参考:[[网络传输中应对混沌态的链路网路怎样保证通讯效率之消息队列]] ↩︎


4.这就是为什么在服务器使用订阅服务模式或者请求应答模式绑定对应端口后,使用NetAssist 以客户端访问可以发送数据,但是在服务端和客户端都没有收到污染。 ↩︎

目录
相关文章
|
消息中间件 负载均衡 监控
【ZMQ PUB模式指南】深入探究ZeroMQ的PUB-SUB模式:C++编程实践、底层原理与最佳实践
【ZMQ PUB模式指南】深入探究ZeroMQ的PUB-SUB模式:C++编程实践、底层原理与最佳实践
3460 1
|
安全 C++
Spdlog日志库的使用,支持文件名/行号/函数名的log打印输出
Spdlog日志库的使用,支持文件名/行号/函数名的log打印输出
6193 0
|
6月前
|
存储 编译器 C++
【c++】多态(多态的概念及实现、虚函数重写、纯虚函数和抽象类、虚函数表、多态的实现过程)
本文介绍了面向对象编程中的多态特性,涵盖其概念、实现条件及原理。多态指“一个接口,多种实现”,通过基类指针或引用来调用不同派生类的重写虚函数,实现运行时多态。文中详细解释了虚函数、虚函数表(vtable)、纯虚函数与抽象类的概念,并通过代码示例展示了多态的具体应用。此外,还讨论了动态绑定和静态绑定的区别,帮助读者深入理解多态机制。最后总结了多态在编程中的重要性和应用场景。 文章结构清晰,从基础到深入,适合初学者和有一定基础的开发者学习。如果你觉得内容有帮助,请点赞支持。 ❤❤❤
769 0
|
消息中间件 监控 负载均衡
ZeroMQ综合指南
ZeroMQ综合指南
2786 0
|
消息中间件 存储 监控
【ZeroMQ的SUB视角】深入探讨订阅者模式、C++编程实践与底层机制
【ZeroMQ的SUB视角】深入探讨订阅者模式、C++编程实践与底层机制
1365 1
|
Ubuntu
蓝易云 - Ubuntu18.04交叉编译curl-7.61.0
这样,curl就被交叉编译并安装到了/usr/arm-linux-gnueabihf目录下。你可以将其拷贝到目标机器上进行使用。
363 2
|
存储 数据处理 图形学
什么是帧同步技术?
【5月更文挑战第3天】什么是帧同步技术?
611 9
|
开发工具 图形学 Android开发
【推荐100个unity插件之6】利用Photon PUN2框架最快最简单实现多人在线游戏
【推荐100个unity插件之6】利用Photon PUN2框架最快最简单实现多人在线游戏
597 0
|
消息中间件 存储 网络协议
Linux IPC 进程间通讯方式的深入对比与分析和权衡
Linux IPC 进程间通讯方式的深入对比与分析和权衡
930 1
|
消息中间件 Unix Linux
【ZMQ polling机制】ZMQ异步接收机制以及与epoll/select的对比分析
【ZMQ polling机制】ZMQ异步接收机制以及与epoll/select的对比分析
882 0