服务器每次启动时如何让客户端接收数据?

How let client receive data everytime the server started?

我已经创建了一个 zmq.SUB 客户端来在它可以获取数据时从服务器接收数据。

client.py


import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.subscribe("")
socket.connect("tcp://localhost:9000")

while True:
    print(socket.recv_string())

问题是我的服务器只需要发送一次数据然后需要快速close.And然后重新打开它,发送数据然后关闭重复这些步骤forever.But客户端无法获取来自服务器的任何数据,任何人都可以在我的特殊情况下提供一些解决方案吗?

server.py


import zmq
context = zmq.Context.instance()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:9000")
socket.send_string(f"Hello")

操作

python client.py  
python server.py  
python server.py  
python server.py  

我稍微更改了代码,现在可以使用了,我认为它没有 工作,因为您立即发送消息。

Server.py

import zmq
import time
context = zmq.Context.instance()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:9000")

input("press enter to send message...")
socket.send_string(f"Hello")

client.py

import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://127.0.0.1:9000")
socket.subscribe("")

while True:
    print(socket.recv_string())

现在 运行

python client.py

然后

python server.py

然后按回车键(不要立即等待至少一刻钟!)