UDP协议在ZeroMQ中不起作用。应该使用哪种插座类型?

问题描述 投票:1回答:2

我试图通过[[PUB:将我的pyzmq-客户端(使用udp://

版本19.0.0)与服务器连接context = zmq.Context() socket = context.socket( zmq.PUB ) socket.connect( "udp://127.0.0.1:34567" )
但是代码总是抛出错误:

zmq.error.ZMQError:协议与套接字类型不兼容

我已经尝试了所有套接字类型,例如:REQ, REP, PUB, SUB, PAIR, DEALER, ROUTER, PULL, PUSH

你知道出什么问题吗?

python udp zeromq pyzmq
2个回答
0
投票
zmq通常不使用udp套接字,因为它们不可靠,唯一的udp套接字是dishradio,但它们是实验性的,可以阅读更多here相关报价:

UDP传输只能与ZMQ_RADIO和ZMQ_DISH套接字一起使用类型。

0
投票
[ZeroMQ确实支持:UDP://{PGM|EPGM}://传输类

[C0的示例:

{ PGM | EPGM }

// Connecting to the multicast address 239.192.1.1, port 5555, // using the first Ethernet network interface on Linux // and the Encapsulated PGM protocol rc = zmq_connect( socket, "epgm://eth0;239.192.1.1:5555" ); assert ( rc == 0 and "ASSERT FAILED: epgm://eth0;239.192.1.1:5555 ............. " );

[// Connecting to the multicast address 239.192.1.1, port 5555, // using the network interface with the address 192.168.1.1 // and the standard PGM protocol rc = zmq_connect(socket, "pgm://192.168.1.1;239.192.1.1:5555" ); assert ( rc == 0 and "ASSERT FAILED: pgm://192.168.1.1;239.192.1.1:5555 ........" );

pgm://传输只能与epgm://ZMQ_PUB套接字类型一起使用。

[ZMQ_SUB

传输只能与UDP://ZMQ_RADIO套接字类型一起使用。

UDP ZMQ_DISH.bind() -s的示例类似:

.connect()

// Unicast - UDP port 5555 on all available interfaces rc = zmq_bind( dish, "udp://*:5555" ); assert ( rc == 0 and "ASSERT FAILED: udp://*:5555 ............. " );
© www.soinside.com 2019 - 2024. All rights reserved.