Для weekday() значение для понедельника равно 0, а для воскресенья — 6. Для
функции isoweekday() значение для понедельника равно 1, а для воскресенья — 7.
Поэтому искомый день — суббота.
9. Когда вам будет (или уже было) 10 000 дней от роду?
>>> from datetime import timedelta
>>> party_day = my_day + timedelta(days=10000)
>>> party_day
datetime.date(2009, 12, 30)
Если это был ваш день рождения, вы, возможно, пропустили еще один повод
повеселиться.
Глава 11. Конкуренция и сети
1. Используйте объект класса socket, чтобы реализовать службу, сообщающую
текущее время. Когда клиент отправляет на сервер строку 'time', верните теку-
щие дату и время как строку ISO.
Вот так можно написать сервер udp_time_server.py:
from datetime import datetime
import socket
address = ('localhost', 6789)
max_size = 4096
print('Starting the server at', datetime.now())
print('Waiting for a client to call.')
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(address)
while True:
data, client_addr = server.recvfrom(max_size)
if data == b'time':
466
Приложение Д. Ответы к упражнениям
now = str(datetime.utcnow())
data = now.encode('utf-8')
server.sendto(data, client_addr)
print('Server sent', data)
server.close()
А так — клиент udp_time_client.py:
import socket
from datetime import datetime
from time import sleep
address = ('localhost', 6789)
max_size = 4096
print('Starting the client at', datetime.now())
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
sleep(5)
client.sendto(b'time', address)
data, server_addr = client.recvfrom(max_size)
print('Client read', data)
client.close()
Я поместил вызов sleep(5) в верхней части цикла клиента, чтобы сделать обмен
данными менее быстрым. Запустите сервер в одном окне: