我正在尝试制作一个通过 nng 发布图像的 c 程序服务器,以及一个通过 pynng 订阅图像的 python 客户端。
出于某种原因,我无法连接这两个部分,我不知道为什么。C/C++ 程序编译和运行良好,python 程序也是如此,但是在 C/C++ 程序上发布了一些内容,在 python 客户端上没有收到任何内容。客户端和服务器在同一台机器上运行。这是我的服务器 C/C++ 代码:
#include <nng/nng.h>
#include <nng/protocol/pubsub0/pub.h>
int main(int argc, char* argv[]){
nng_socket sock;
int rv;
const char *url = "tcp://0.0.0.0:2234";
if ((rv = nng_pub0_open(&sock)) != 0) {
fatal("nng_pub0_open", rv);
}
if ((rv = nng_listen(sock, url, NULL, 0)) < 0) {
fatal("nng_listen", rv);
}
// camera setup code omitted
while(1){
INT r = IS_SUCCESS;
char* frame =(char*) d.processNextFrame(50,r); // grab image. if not successful, continue loop
if (r != IS_SUCCESS || !frame)
continue;
std::cout << "frame caught... "<< bpp * nImgW * nImgH<< std::endl;
if ((rv = nng_send(sock, frame, bpp * nImgW * nImgH, 0)) != 0) {
fatal("nng_send", rv);
}else{
std::cout << "Frame Sent... "<< std::endl;
}
}
}
这是我的客户端python代码:
from pynng import Sub0, Timeout
address = 'tcp://127.0.0.1:2234'
sub2 = Sub0(dial=address, recv_timeout=5000)
print(sub2.recv())
有人可以帮我理解为什么这不起作用吗?