【发布时间】:2018-04-30 20:58:39
【问题描述】:
我有一个客户端应用程序,它向远程服务器发送消息,消息从服务器得到处理,结果被发送回客户端。
一个简化的例子如下:
client.py
import zmq
def get_message(msg, ip, port, socket, send_socket_type='pyobj'):
socket.connect("tcp://%s:%s" % (ip, port))
socket.send_string(msg)
if send_socket_type=='pyobj':
msg = socket.recv_pyobj()
if send_socket_type=='string':
msg = socket.recv_string()
if send_socket_type=='json':
msg = socket.recv_json()
return msg
socket.close()
server.py
import zmq
import time
port=9999
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:%s" % port)
def processmessage(msg):
for i in range(10):
print(i)
time.sleep(1)
return msg
while True:
msg = socket.recv()
print('message received from client:', msg)
cmd = processmessage(msg)
socket.send_pyobj(cmd)
print('sending to client: %s ' % msg)
time.sleep(0.2)
测试:
server_env={'IP': ip, 'PORT': port}
context = zmq.Context()
socket = context.socket(zmq.REQ)
messages = ['first message', 'second message', 'third message']
for i in messages:
msg = get_message('message', ip=server_env['IP'], port=server_env['PORT'], socket)
print(msg)
我的问题:
- 如何扩展这个简单的客户端-服务器示例以允许客户端接收由运行服务器端的进程
processmessage()生成的标准输出?
【问题讨论】: