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协议编译相关推荐

  1. 源码编译更新nginx到最新版本,并开始nginx支持http2协议模块.

    最近因为迁移公司vm上的代码,遇到一些问题.有一台vm配置了https协议,原以为迁移安全证书以后,配置nginx就可以了,但是修改nginx配置文件以后,执行 nginx -t 命令后,报如下错误: ...

  2. c语言作业系统输出超限,C语言网Online Judge系统支持语言和编译说明

    Online Judge系统支持语言和编译情况: 语言 编译器 语言版本 编译参数 C gcc 4.6.3 C99 gcc Main.c -o Main -Wall -lm –static -std= ...

  3. 使用支持SPDY协议的Wireshark截包(含spdyshark插件)

    因为SPDY基于SSL/TLS,所以要分析出SPDY包,就需要能解密TLS,就得有SPDY服务器的私钥.所以只能分析自己搭的服务器的包. 本文基于前三篇文章,请先阅读: Linux Mint + Ap ...

  4. 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用

    cz88 基于 cz88 纯真IP数据库开发的 IP 解析服务 - 支持 http 协议请求或 rpc 协议请求,也支持第三方包的方式引入直接使用 Go 语言编写 进程内缓存结果,重复的 ip 查询响 ...

  5. linux tcp压测工具,wrktcp: 支持tcp协议压测的wrk工具,全配置不依赖lua

    wrktcp - 无lua依赖的tcp协议压测wrk工具 你可以查看readme in the file:README_EN.md [TOC] 本程序主要是基于wrk的基础上 取消了ssl和lua依赖 ...

  6. 轻松让你的nginx服务器支持HTTP2协议

    文章目录 简介 HTTP1.1和HTTP2 安装最新的nginx 开启HTTP2支持 添加SSL支持 修改加密算法 Diffie–Hellman对消息进行加密 重定向所有的HTTP请求到HTTPS 启 ...

  7. 基于Nginx+rtmp搭建支持hls协议的点播流媒体服务器(windows/Linux)

    前言:公司最近因为客户端视频文件过大导致视频加载时间很长,让我将视频播放做成流媒体点播的形式,于是查阅了几十篇相关文章以及文档,最终将功能实现.可能是存在版本差异,绝大部分文章介绍的教程并不能成功实施 ...

  8. 从OkHttp引入Cronet支持quic协议

    HTTP/3在HTTP/2的基础上,增强了安全上的限制,且使用UDP传输降低丢包导致的头部阻塞.降低因为TCP的协议限制而导致的连接耗时高等问题,但是目前各大浏览器的支持范围不够广,暂时不建议在网页相 ...

  9. loadrunner支持https协议的操作方法-经验总结

    问题:用户portal支持https协议,用loadrunner录制登陆脚本时发现未录制到用户名和密码 录制到的脚本如下: login() { lr_think_time(10); web_url(& ...

最新文章

  1. hive 使用技巧笔记
  2. Oracle的连接与会话
  3. Bootstrap之轮播图
  4. 打响进军元宇宙第一枪!网易云信发布两大元宇宙解决方案
  5. oracle -239报错,解决: ./check_oracle_health --connect orcl --mode connection-time 报错的问题...
  6. 表锁与行锁的区别以及适用情况
  7. 统计数字(信息学奥赛一本通-T1239)
  8. c 读取mysql 并显示_c/c++ mysql读取操作实现简单操控电脑
  9. Gnumeric,专业处理数字软件
  10. 如何安装中文manpage
  11. python爬虫数据提取_入门Python爬虫——提取数据篇
  12. 北京朝阳行政区划(朝阳区街道行政区划) 用于shp数据转为geojson格式作为ECharts地图
  13. 浏览器解析jsx_jsx的本质
  14. 跨域问题,以及nginx应对403 ACAO的处理办法
  15. 【心情随笔】2021年终总结
  16. java后端实现集成支付宝APP支付(沙箱环境)
  17. PHP Include文件
  18. 基于STM32的多功能门禁系统(AS608指纹识别、密码解锁、刷卡解锁)
  19. 翻译《Pro SQL Server Internals,2nd edition》的CHAPTER 3 Statistics的Introduction to SQL Server Statistics等
  20. Python学习笔记——字典

热门文章

  1. 成功WEB商务的7步走(7)——PDCA
  2. 在 Create-React-App 中使用 TypeScript(汉化)
  3. 使用OpenCV采集摄像头的视频并保存为文件
  4. 使用Python来操作邮箱
  5. 【每日一问】工作日问题
  6. Activity onDestroy方法未能及时执行原因
  7. 计算机的中mb b单位的关系,计算机中容量单位B、KB、MB、GB和TB的关系.doc
  8. kali攻击wifi、破解wifi详细教程(仅供学习使用)
  9. Linux系列(四)、文件属性查看和修改,以及软硬连接
  10. 俄罗斯联邦储蓄银行将采取措施绕开本国加密货币监管