Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 361

reply = client.recv()

print("Client received %s" % reply)

Для простых сокетов вам нужно сначала запустить сервер. С помощью ZeroMQ

вы можете запустить первым как клиент, так и сервер:

$ python zmq_time_server.py

Server started at 2014-06-03 01:39:36.933532

$ python zmq_time_client.py

Client started at 2014-06-03 01:39:42.538245

Через 15 секунд вы должны увидеть сообщения от сервера:

Server sent 2014-06-03 01:39:47.539878

Server sent 2014-06-03 01:39:52.540659

Server sent 2014-06-03 01:39:57.541403

Эти строки вы должны увидеть в сообщении от клиента:

Client received b'2014-06-03 01:39:47.539878'

Client received b'2014-06-03 01:39:52.540659'

Client received b'2014-06-03 01:39:57.541403'

468

Приложение Д. Ответы к упражнениям

3. Попробуйте сделать то же самое с помощью XMLRPC.

Сервер xmlrpc_time_server.py:

from xmlrpc.server import SimpleXMLRPCServer

def now():

from datetime import datetime

data = str(datetime.utcnow())

print('Server sent', data)

return data

server = SimpleXMLRPCServer(("localhost", 6789))

server.register_function(now, "now")

server.serve_forever()

И клиент xmlrpc_time_client.py:

import xmlrpc.client

from time import sleep

proxy = xmlrpc.client.ServerProxy("http://localhost:6789/")

while True:

sleep(5)

data = proxy.now()

print('Client received', data)

Запустим сервер:

$ python xmlrpc_time_server.py

Запустим клиент:

$ python xmlrpc_time_client.py

Подождите примерно 15 секунд. Так выглядят первые три строки от сервера:

Server sent 2014-06-03 02:14:52.299122

127.0.0.1 -- [02/Jun/2014 21:14:52] "POST / HTTP/1.1" 200 -

Server sent 2014-06-03 02:14:57.304741

127.0.0.1 -- [02/Jun/2014 21:14:57] "POST / HTTP/1.1" 200 -

Server sent 2014-06-03 02:15:02.310377

127.0.0.1 -- [02/Jun/2014 21:15:02] "POST / HTTP/1.1" 200 -

А так — первые три строки от клиента:

Client received 2014-06-03 02:14:52.299122