zmq 通信收发json
时间: 2023-07-25 20:28:58 浏览: 279
c++ ZMQ 接受发送端
在使用 ZeroMQ 进行通信时,可以使用 JSON 格式作为消息的数据格式。下面以 Python 语言为例,介绍如何使用 ZeroMQ 进行 JSON 消息的发送和接收。
首先,需要安装 `pyzmq` 和 `json` 两个 Python 模块。可以使用以下命令进行安装:
```
pip install pyzmq
```
然后,可以使用以下代码进行 JSON 消息的发送和接收:
```python
import zmq
import json
# 创建 ZeroMQ 上下文和套接字
context = zmq.Context()
socket = context.socket(zmq.REQ)
# 连接到目标地址
socket.connect("tcp://localhost:5555")
# 准备要发送的数据
data = {"name": "Alice", "age": 30}
# 将数据转换为 JSON 字符串
json_data = json.dumps(data)
# 发送 JSON 消息
socket.send(json_data.encode())
# 等待并接收回复
reply = socket.recv()
# 将回复的 JSON 字符串转换为字典
json_reply = json.loads(reply.decode())
# 打印回复的数据
print(json_reply)
```
在上面的代码中,首先创建了 ZeroMQ 上下文和套接字,然后连接到目标地址。接着,将要发送的数据转换为 JSON 字符串,并使用 `encode()` 方法将其转换为字节数组。使用 `send()` 方法发送 JSON 消息。然后等待并接收回复,将回复的字节数组转换为 JSON 字符串,再使用 `loads()` 方法将其转换为字典类型。最后打印回复的数据。
在接收端,可以使用以下代码进行 JSON 消息的接收和回复:
```python
import zmq
import json
# 创建 ZeroMQ 上下文和套接字
context = zmq.Context()
socket = context.socket(zmq.REP)
# 绑定到指定地址
socket.bind("tcp://*:5555")
while True:
# 接收 JSON 消息
json_data = socket.recv()
# 将 JSON 字符串转换为字典
data = json.loads(json_data.decode())
# 打印接收到的数据
print(data)
# 准备要回复的数据
reply_data = {"status": "ok"}
# 将回复的数据转换为 JSON 字符串
json_reply = json.dumps(reply_data)
# 发送 JSON 回复
socket.send(json_reply.encode())
```
在上面的代码中,首先创建了 ZeroMQ 上下文和套接字,并使用 `bind()` 方法将套接字绑定到指定地址。然后进入一个无限循环,不断接收 JSON 消息,并将其转换为字典类型。接着打印接收到的数据,并准备要回复的数据。将要回复的数据转换为 JSON 字符串,并使用 `encode()` 方法将其转换为字节数组。最后使用 `send()` 方法发送 JSON 回复。
以上就是使用 ZeroMQ 进行 JSON 消息的收发的示例代码,希望能对你有所帮助。
阅读全文