gpt4 book ai didi

python - nng支付nng pub/sub。客户端未收到任何消息

转载 作者:行者123 更新时间:2023-12-02 10:32:28 29 4
gpt4 key购买 nike

我有以下服务器(C++):

#include <nng/nng.h>
#include <nng/protocol/pubsub0/pub.h>
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <unistd.h>
void
fatal(const char *func, int rv)
{
fprintf(stderr, "%s: %s\n", func, nng_strerror(rv));
}
int main(int argc, char* argv[]){
nng_socket sock;
int rv;
std::string url = "tcp://0.0.0.0:" + std::to_string(5563);
if ((rv = nng_pub0_open(&sock)) != 0) {
fatal("nng_pub0_open", rv);
}
if ((rv = nng_listen(sock, url.c_str(), NULL, 0)) < 0) {
fatal("nng_listen", rv);
}
while(1){
std::string msg = std::string("msg");
//if ((rv = nng_send(sock, (void*)frame, bpp * nImgW * nImgH, 0)) != 0) {
if ((rv = nng_send(sock, (void*)msg.c_str(), 3, 0)) != 0) {
fatal("nng_send", rv);
}else{
std::cout << "Frame Sent... "<< std::endl;
}
sleep(1);
}
}

和以下客户端(python):
import pynng
from pynng import Pub0, Sub0, Timeout
cam_path = "tcp://127.0.0.1:5563"
with Sub0(dial=cam_path,recv_timeout=2000, topics=b'') as sub:
sub.recv_max_size = 0 #recieve msg of any size
while(1):
try:
print("waiting for msg")
img = sub.recv()
print(img)
except pynng.exceptions.Timeout as e:
print('Timed out, retrying...')

我不明白为什么没有消息到达客户端。我已经设置了主题和recv_max_size,但是仍然没有消息到达客户端。
我现在在这里做错了什么?

最佳答案

Q : "What am I doing wrong here now?"



您碰巧盲目地认为事情以代码未尝试验证的方式发生。老汇编狼曾经在开始编写代码之前先声明 # ASSUME NOTHING :o)

著名的AMQP / ZeroMQ福音传教大师Pieter Hintjens'(nanomsg / nng的哥哥)使用来自 assert -s的显式POSACK-s:
if ( (  aRetCODE = nng_pub0_open( &sock ) ) != 0 ) {
fatal( "nng_pub0_open",
aRetCODE );
}
assert( aRetCODE == 0 && "EXC: Pub0 socket failed to instantiate" );

if ( ( aRetCODE = nng_listen( sock, url.c_str(), NULL, 0 ) ) < 0 ) {
fatal( "nng_listen",
aRetCODE );
}
assert( aRetCODE == 0 && "EXC: Pub0 socket failed to .listen()" );

Python还有一个类似的 assert -tool用于显式POSACK检查,因此值得使用它们来完善代码的鲁棒性,因为Pieter Hintjens使Martin Sustrik可以在任何阅读API的地方都这样做:o)
assert rc == 0, "INF: some condition was not met for ( %r )" % someVariableNAME

很高兴为您的项目使用 nng / pynng !

关于python - nng支付nng pub/sub。客户端未收到任何消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61750931/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com