Starting the server at 2014-06-02 20:28:47.415176
Waiting for a client to call.
Запустите клиент в другом окне:
$ python udp_time_client.py
Starting the client at 2014-06-02 20:28:51.454805
Через 5 секунд вы начнете видеть сообщения в обоих окнах. Так выглядят пер-
вые три строки от сервера:
Server sent b'2014-06-03 01:28:56.462565'
Server sent b'2014-06-03 01:29:01.463906'
Server sent b'2014-06-03 01:29:06.465802'
А так — первые три строки от клиента:
Client read b'2014-06-03 01:28:56.462565'
Client read b'2014-06-03 01:29:01.463906'
Client read b'2014-06-03 01:29:06.465802'
Обе эти программы работают вечно, поэтому вам нужно завершать их вручную.
2. Используйте сокеты ZeroMQ REQ и REP, чтобы сделать то же самое.
Так выглядит файл zmq_time_server.py:
import zmq
from datetime import datetime
Глава 11. Конкуренция и сети
467
host = '127.0.0.1'
port = 6789
context = zmq.Context()
server = context.socket(zmq.REP)
server.bind("tcp://%s:%s" % (host, port))
print('Server started at', datetime.utcnow())
while True:
# Wait for next request from client
message = server.recv()
if message == b'time':
now = datetime.utcnow()
reply = str(now)
server.send(bytes(reply, 'utf-8'))
print('Server sent', reply)
А так — zmq_time_client.py:
import zmq
from datetime import datetime
from time import sleep
host = '127.0.0.1'
port = 6789
context = zmq.Context()
client = context.socket(zmq.REQ)
client.connect("tcp://%s:%s" % (host, port))
print('Client started at', datetime.utcnow())
while True:
sleep(5)
request = b'time'
client.send(request)