Сети
333
Предыдущий вызов вернул два кортежа: первый для UDP, а второй — для TCP
(6 в строке 2, 1, 6 — это значение для TCP).
Вы можете запросить информацию только для TCP или только для UDP:
>>> socket.getaddrinfo('www.crappytaxidermy.com', 80, socket.AF_INET,
socket.SOCK_STREAM)
[(2, 1, 6, '', ('66.6.44.4', 80))]
Некоторые номера портов для TCP и UDP (http://bit.ly/tcp-udp-ports) зарезерви-
рованы определенными службами IANA и связаны с именами служб. Например,
HTTP имеет имя http, ему присвоен номер порта TCP 80.
Эти функции преобразуют имена служб к номерам портов и наоборот:
>>> import socket
>>> socket.getservbyname('http')
80
>>> socket.getservbyport(80)
'http'
Модули для работы с электронной почтой
Стандартная библиотека Python содержит следующие модули для работы с элек-
тронной почтой:
smtplib — для отправки сообщений по электронной почте с помощью Simple Mail
Transfer Protocol (SMTP, простой протокол передачи почты);
email — для создания и анализа сообщений электронной почты;
poplib — для чтения электронной почты с помощью Post Office Protocol 3 (POP3,
протокол почтового отделения, версия 3);
imaplib — для чтения электронной почты с помощью Internet Message Access
Protocol (IMAP, протокол доступа к электронной почте).
Официальная документация содержит примеры кода (http://bit.ly/py-email) для
всех этих библиотек.
Если вы хотите написать собственный SMTP-сервер на Python, попробуйте
smtpd (http://bit.ly/py-smtpd).
Написанный на чистом Python SMTP-сервер, который называется Lamson (http://
lamsonproject.org/), позволяет хранить сообщения в базе данных, и вы даже сможе-
те блокировать спам.
Другие протоколы
С помощью стандартного модуля ftplib (http://bit.ly/py-ftplib) вы можете перемещать
байты с помощью File Transfer Protocol (FTP). Несмотря на свой возраст, протокол
FTP все еще хорошо работает.
Вы видели, как эти модули используются повсеместно в разных местах этой
книги, взгляните также на документацию, касающуюся поддержки интернет-про-
токолов в стандартной библиотеке (http://bit.ly/py-internet).
334
Глава 11. Конкуренция и сети
Веб-службы и API
Поставщики информации всегда имеют сайт, но он предназначен для человеческих
глаз, а не для машин. Если данные опубликованы только на сайте, любой, кто хочет
получить к ним доступ, должен писать краулер (это показано в подразделе «Поиск
и выборка данных» раздела «Веб-сервисы и автоматизация» главы 9) и переписы-
вать их после каждого изменения формата. Обычно это утомительно. В противопо-