我有一个服务器(在亚马逊上运行)和一个连接到它的客户端。建立连接后,客户端和服务器仅相互通信并发送消息。
e.g.
1. Client -> Server
2. Client -> Server
3. Client <- Server
4. Client -> Server
5. Client <- Server
6. Client <- Server
客户端可能会失去连接并在一段时间后重新连接并恢复消息发送。另外,消息顺序有何影响? #2 能在#1 之前到达吗?
要在现有答案中添加一些内容(因为它有一个要求详细说明的赞成评论),一种解决方案可能是在每个节点上设置两个套接字。这是我们使用发送消息的示例input
在后台线程上监听响应时:
server.py
:
import zmq
import threading
context = zmq.Context()
send_socket = context.socket(zmq.PUSH)
send_socket.bind('tcp://*:5556')
def print_incoming_messages():
recv_socket = context.socket(zmq.PULL)
recv_socket.bind('tcp://*:5557')
while True:
msg = recv_socket.recv_string()
print(f'Message from client: {msg}')
# Print incoming messages in background
recv_thread = threading.Thread(target=print_incoming_messages)
recv_thread.start()
while True:
msg = input('Message to send: ')
send_socket.send_string(msg)
client.py
:
import zmq
import threading
context = zmq.Context()
send_socket = context.socket(zmq.PUSH)
send_socket.connect('tcp://127.0.0.1:5557')
def print_incoming_messages():
recv_socket = context.socket(zmq.PULL)
recv_socket.connect('tcp://127.0.0.1:5556')
while True:
msg = recv_socket.recv_string()
print(f'Message from server: {msg}')
recv_thread = threading.Thread(target=print_incoming_messages)
recv_thread.start()
while True:
msg = input('Message to send: ')
send_socket.send_string(msg)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)