ZMQ_STREAM 发送接收示例
时间: 2023-07-21 22:16:25 浏览: 181
以下是一个使用 ZMQ_STREAM 协议进行发送和接收的示例代码:
发送端:
```python
import zmq
context = zmq.Context()
socket = context.socket(zmq.STREAM)
socket.connect("tcp://localhost:5555")
identity = b"sender"
message = b"Hello ZMQ_STREAM"
socket.send(identity, zmq.SNDMORE)
socket.send(message)
```
接收端:
```python
import zmq
context = zmq.Context()
socket = context.socket(zmq.STREAM)
socket.bind("tcp://*:5555")
while True:
identity = socket.recv()
message = socket.recv()
print(f"Received message from {identity}: {message}")
```
在发送端,我们首先创建了一个 ZMQ_STREAM 类型的套接字,并使用 `connect()` 方法连接到目标主机和端口。然后,我们为发送者定义了一个 `identity`,并将其与消息一起发送到套接字。注意,在发送 `identity` 后,我们使用 `SNDMORE` 标志来指示消息仍将继续发送。
在接收端,我们创建了一个 ZMQ_STREAM 套接字,并使用 `bind()` 方法将其绑定到 `*:5555`。在一个无限循环中,我们接收来自套接字的 `identity` 和消息,并将它们打印出来。
需要注意的是,ZMQ_STREAM 协议需要发送和接收方都使用 `identity`。在发送端,`identity` 是可选的,但在接收端,它是必需的。如果发送端没有指定 `identity`,则接收端将无法确定消息来自哪个发送者。
阅读全文