Скачиваний:
35
Добавлен:
02.05.2014
Размер:
203.78 Кб
Скачать

Сетевые протоколы

Эту группу модулей я вынесу в отдельную часть. Это большая, хорошо разработанная группа модулей, реализующая доступ к сетевым протоколам и форматам файлов.

Эта часть библиотеки устроена иерархически, модули здесь зависят друг от друга и друг друга интенсивно используют. В самом низу находятся модули socket и select. Модуль socket предоставляет объектно-ориентированный интерфейс к функциям сетевых библиотек ОС. Поддерживаются все виды socket и все сетевые протоколы - TCP/IP (включая IPv6), UNIX domain, IPX/SPX, и т.д. Модуль select дает доступ к системным вызовам select и poll.

Модуль cgi - модуль номер один для написания CGI-скриптов. Модуль дает доступ к переданной от браузера форме, позволяет проверить наличие данных, извлечь и обработать эти данные и т.п.

Модули httplib, ftplib, gopherlib, poplib, imaplib, nntplib, smptlib, telnetlib дают доступ к клиентским частям соответствующих протоколов. Библиотека urllib позволяет иметь доступ к сетевым ресурсам, задаваемым URL; она, конечно, использует библиотеки httplib, ftplib и nntplib. Библиотека urllib2 - более сложная версия urllib; она содержит код для доступа к сетевым ресурсам через прокси с авторизацией. Модуль Cookie позволяет создавать и обрабатывать Cookie – блоки информации, пересылаемые между браузером и HTTP-сервером в целях создания сессий.

Помимо клиентских протоколов, библиотека Питона содержит и средства создания серверов. Модуль SocketServer содержит базовые классы, на основе которых пишутся как потоковые (TCP), так и датаграммные (UDP) серверы, как многопроцессные (использующие os.fork()), так и многопоточные (multithreading). Модуль BaseHTTPServer содержит базовые классы для создания HTTP-серверов. Модуль SimpleHTTPServer развивает эти базовые классы и позволяет программисту писать реакции на запросы GET, HEAD и POST. Модуль CGIHTTPServer позволяет расширять функциональность сервера внешними программами. Модули asyncore и asynchat позволяют писать асинхронные (на основе select/poll) клиенты и серверы. Наиболее известные асинхронные серверы - однопоточный многопротокольный сервер Medusa и сделанный на ее основе многопоточный ZServer, являющийся ядром сервера web-приложений Zope. Наиболее известный клиент: Asynchronous HTTP Client.

Помимо сетевых протоколов, Python позволяет манипулировать и с данными, бегающими поверх этих протоколов. Модуль rfc822 позволяет читать данные в формате соответствующего RFC и получать информацию о заголовках сообщения. Модуль mimetools расширяет rfc822 в сторону соответствующего стандарта и позволяет разбирать сложные составные сообщения. Модуль MimeWriter позволяет их создавать. Модули binhex, uu, binascii, base64, quopri позволяют кодировать и декодировать тексты. Модули mailcap, mimetypes, netrc, robotparse извлекают информацию из соответствующих файлов. Модули mailbox и mhlib позволяют читать почтовые ящики в формате UNIX mbox и MH.

Модули sgmllib, htmllib и xmllib позволяют создавать парсеры для файлов соответствующих форматов. Модуль sgmllib поддерживает подмножество SGML, достаточное лишь для обработки HTML. Модуль htmllib расширяет предыдущий модуль в сторону написания текстовых форматеров для HTML. А вот xmllib действительно содержит полноценные парсеры XML. Парсеров этих бывает 2 типа - работающих со всем деревом сразу (DOM, Document Object Model) и разбор, управляемый событиями (SAX). Библиотека эта к тому же содержит хуки, позволяющие администратору установить поверх нее другую версию, не стирая старой; существует несколько альтернативных реализаций, использующих эти хуки: PyXML и 4Suite. Все эти библиотеки используют низкоуровневый парсер Expat, который не входит в дистрибутив Питона; его надо устанавливать отдельно.