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

[(2, 2, 17, '', ('66.6.44.4', 80)), (2, 1, 6, '', ('66.6.44.4', 80))]

Сети

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) и переписы-

вать их после каждого изменения формата. Обычно это утомительно. В противопо-