zeroMQ支持PGM协议编译
vs2019编译
1.下载openPGM
链接:https://github.com/steve-o/openpgm
编译虽然过了但是,拿zmq epgm测试时直接报错abort参数无效。简单说就是
拿vs2019编译的openpgm,虽然编译过了,但是使用zmq epgm测试,直接abort。折腾半天发现是setsockopt使用参数级别宏SOL_IP问题,必须使用IPPROTO_IP设置,要不报参数无效。我发现vs2015中ws2def.h没有SOL_IP定义。按理IPPROTO_IP == SOL_IP,但是vs2019 ws2def.h中值不一样。详情https://github.com/zeromq/libzmq/issues/4301。
2.下载zeroMQ源码
链接:Release libzmq 4.3.4 · zeromq/libzmq · GitHub
3.cmake编译
cmake-gui打开cmake文件,勾选WithOpenPGM.选择编译动态库,静态库比较麻烦
4.打开工程编译
编译后产生.lib.dll文件
5.建立测试工程测试
附:
1.已经修改openpgm中源码使用IPPROTO_IP。静态链接到libzmq。
自己编译好的 https://download.csdn.net/download/choujayyl/42438886
2.python测试例子
import time
import zmqcontext = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("epgm://192.168.0.15;224.0.22.1:9210")
socket.setsockopt(zmq.SUBSCRIBE, b'')
while True:# Wait for next request from clientmessage = socket.recv()print("Received request: %s" % message)# Do some 'work'#time.sleep(1)# Send reply back to client#socket.send(b"World")
3.C测试例子接收端
//
// Created by choujayyl on 2021/11/15.
//#include <string.h>
#include <windows.h>
#include <zmq.h>
int main()
{int index = 0;int count = -1;char buf[128000];//上下文void* context = zmq_ctx_new();//服务器指定为发布者void* socket = zmq_socket(context, ZMQ_SUB);//连接组播地址, epgm协议写法官网上有详细说明, 这里不指定网络接口, 使用默认zmq_setsockopt(socket, ZMQ_SUBSCRIBE, "", 0);int rc = zmq_connect(socket, "epgm://192.168.0.15;224.0.22.1:9210");if (rc != 0){printf("zmq_errno() is %d,:%s\n", zmq_errno(), zmq_strerror(zmq_errno()));return -1;}while (1) {count = zmq_recv(socket, buf, sizeof(buf), 0);if (count > 0){printf("RECV: %d\r\n", count);}else{printf("ERROR: %d\r\n", count);}}zmq_close(socket);zmq_ctx_destroy(context);return 0;
}
4.C发送端例子
// testEPGM.cpp : 定义控制台应用程序的入口点。
//#include <zmq.h>
#include <Windows.h>
int main()
{int index = 0;int count = -1;char buf[12800];//上下文void* context = zmq_ctx_new();//服务器指定为发布者void* socket = zmq_socket(context, ZMQ_PUB);//连接组播地址, epgm协议写法官网上有详细说明, 这里不指定网络接口, 使用默认int rc = zmq_connect(socket, "epgm://192.168.0.6;224.0.22.1:9210");if (rc != 0){printf("zmq_errno() is %d,:%s\n", zmq_errno(), zmq_strerror(zmq_errno()));return -1;}while (1) {sprintf_s(buf, sizeof(buf),"%d -- SERVER MSG!", index++);//发送消息count = zmq_send(socket, buf, sizeof(buf), 0);printf("%s (%d)\r\n", buf, count);Sleep(1000);}zmq_close(socket);zmq_ctx_destroy(context);return 0;
}
zeroMQ支持PGM协议编译相关推荐
- 源码编译更新nginx到最新版本,并开始nginx支持http2协议模块.
最近因为迁移公司vm上的代码,遇到一些问题.有一台vm配置了https协议,原以为迁移安全证书以后,配置nginx就可以了,但是修改nginx配置文件以后,执行 nginx -t 命令后,报如下错误: ...
- c语言作业系统输出超限,C语言网Online Judge系统支持语言和编译说明
Online Judge系统支持语言和编译情况: 语言 编译器 语言版本 编译参数 C gcc 4.6.3 C99 gcc Main.c -o Main -Wall -lm –static -std= ...
- 使用支持SPDY协议的Wireshark截包(含spdyshark插件)
因为SPDY基于SSL/TLS,所以要分析出SPDY包,就需要能解密TLS,就得有SPDY服务器的私钥.所以只能分析自己搭的服务器的包. 本文基于前三篇文章,请先阅读: Linux Mint + Ap ...
- 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用
cz88 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用 Go 语言编写 进程内缓存结果,重复的 ip 查询响 ...
- linux tcp压测工具,wrktcp: 支持tcp协议压测的wrk工具,全配置不依赖lua
wrktcp - 无lua依赖的tcp协议压测wrk工具 你可以查看readme in the file:README_EN.md [TOC] 本程序主要是基于wrk的基础上 取消了ssl和lua依赖 ...
- 轻松让你的nginx服务器支持HTTP2协议
文章目录 简介 HTTP1.1和HTTP2 安装最新的nginx 开启HTTP2支持 添加SSL支持 修改加密算法 Diffie–Hellman对消息进行加密 重定向所有的HTTP请求到HTTPS 启 ...
- 基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)
前言:公司最近因为客户端视频文件过大导致视频加载时间很长,让我将视频播放做成流媒体点播的形式,于是查阅了几十篇相关文章以及文档,最终将功能实现.可能是存在版本差异,绝大部分文章介绍的教程并不能成功实施 ...
- 从OkHttp引入Cronet支持quic协议
HTTP/3在HTTP/2的基础上,增强了安全上的限制,且使用UDP传输降低丢包导致的头部阻塞.降低因为TCP的协议限制而导致的连接耗时高等问题,但是目前各大浏览器的支持范围不够广,暂时不建议在网页相 ...
- loadrunner支持https协议的操作方法-经验总结
问题:用户portal支持https协议,用loadrunner录制登陆脚本时发现未录制到用户名和密码 录制到的脚本如下: login() { lr_think_time(10); web_url(& ...
最新文章
- hive 使用技巧笔记
- Oracle的连接与会话
- Bootstrap之轮播图
- 打响进军元宇宙第一枪!网易云信发布两大元宇宙解决方案
- oracle -239报错,解决: ./check_oracle_health --connect orcl --mode connection-time 报错的问题...
- 表锁与行锁的区别以及适用情况
- 统计数字(信息学奥赛一本通-T1239)
- c 读取mysql 并显示_c/c++ mysql读取操作实现简单操控电脑
- Gnumeric,专业处理数字软件
- 如何安装中文manpage
- python爬虫数据提取_入门Python爬虫——提取数据篇
- 北京朝阳行政区划(朝阳区街道行政区划) 用于shp数据转为geojson格式作为ECharts地图
- 浏览器解析jsx_jsx的本质
- 跨域问题,以及nginx应对403 ACAO的处理办法
- 【心情随笔】2021年终总结
- java后端实现集成支付宝APP支付(沙箱环境)
- PHP Include文件
- 基于STM32的多功能门禁系统(AS608指纹识别、密码解锁、刷卡解锁)
- 翻译《Pro SQL Server Internals,2nd edition》的CHAPTER 3 Statistics的Introduction to SQL Server Statistics等
- Python学习笔记——字典