我尝试在pyzmq中实现两个流套接字之间的连接的简单示例。在
发件人.py
import zmq
context = zmq.Context()
socket = context.socket(zmq.STREAM)
socket.bind("tcp://*:5555")
socket.connect("tcp://localhost:5556")
socket.send("message")
接收器.py
^{pr2}$输出
Received [ b'\x00k\x8bEg' ]
Received [ b'' ]
我想问一下在流套接字之间发送消息的正确方法是什么。在
下面是一个使用pyzmq进行单向连接的简化示例。在
发件人.py
接收器.py
^{pr2}$您的
socket.recv()
-ed数据与ZeroMQ规范完全匹配,尽管它们不必让您感到高兴,而且您怀疑为什么会得到这些数据,而不是准确地传递所发送消息的精确副本。在所以,耐心点,继续阅读。在
ZeroMQ最近添加了
STREAM
套接字原型相当具体任何对ZeroMQ信令/消息传递工具有几年经验的人都会告诉您,最近(v4.x)添加的
STREAM
原型并不是ZeroMQ进程与ZeroMQ进程相互通信需求的最佳选择。在为什么?ZeroMQ工具所拥有的所有gem都是并且必须是
STREAM
中的快捷方式,以便允许ZeroMQ套接字访问点能够与另一个套接字端点进程“对话”,后者对ZeroMQ智能套接字高级协议一无所知。在如果您遵循多连接套接字情况下
^{pr2}$STREAM
行为的描述,那么发送方将碰巧在socket
实例上接收一个公平队列循环读取,该实例连接到多个端点(1x通过.connect()
+Nx,通过.bind()
,N = < 0, +INF )
)连接到多个端点,到目前为止还没有对计数进行任何控制或者/以及通信对等点的性质,但是在socket.recv()
-s上有一个公平的排队循环机制,这绝对不是一个安全的设计实践。在相关问题 更多 >
编程相关推荐