Как стать автором
Обновить

Комментарии 12

# Принимаем переданных клиентом данные, но не более 1024 байт
data = conn.recv(1024)

Скорее принимаем первые 1024 байта. Это работа с сырыми сокетами и команда, как я понимаю является прямым биндингом к recv в C.
Думаю в python есть более высокоуровневые решения.
Поправьте, если ошибаюсь.
А вообще жду на github. Так и читать код приятнее будет и может кто-то что-то захочет добавить.
Завтра собираюсь отрефакторить и залить, и, возможно, подготовить немного кода для следующей статьи, преимущественно про защиту.
Да, всё верно. Данная команда является просто связкой с системными сокетами и читает первые 1024 (или меньше) байт от ещё не прочитанных. Правильнее было бы читать их небольшими кусками в цикле, но, так как данные небольшие, можно просто прочитать первые 1024 байт. Сомневаюсь, что кому-то потребуется скачать сайт, у которого адрес больше тысячи символов длиной.
Бывают ссылки с трекингом googe analytics(utm=....). Они бывает и в 2к символов не укладываются. Плюс еще utf… Ну в общем вы поняли к чему я.
В следующей статье добавлю несколько вспомогательных функций для сокетов. В общем, следующая статья будет больше не на добавление функционала, а на исправление недостатков и дыр приложения.
Фокусы начнутся при плохом интернет соединении и нетерпеливом пользователе, который быстро пошлет 2 команды, а у вас на сервере они соединятся в 1, так как TCP это поток данных, он не разделяет сообщения.

Либо на оборот получение одной команды разобьется на «2 разных сообщения».
Во-первых, это не стандартная библиотека, а меня интересовали именно встроенные в Python средства для сетевого программирования. Во-вторых, что самое главное, предназначение у этой библиотеки другое, что понятно даже по названию.
Feature Support
Requests is ready for today’s web.

International Domains and URLs
Keep-Alive & Connection Pooling
Sessions with Cookie Persistence
Browser-style SSL Verification
Basic/Digest Authentication
Elegant Key/Value Cookies
Automatic Decompression
Unicode Response Bodies
Multipart File Uploads
Connection Timeouts
.netrc support
Python 2.6—3.4
Thread-safe.
Специально для тех, кто придёт из гугла по запросу «скачать сайт» напоминаю про отличный многопоточный инструмент скачивания страниц/сайтов: github.com/binux/pyspider
Он не из простых, но за час можно вполне освоится со всеми фишками и успешно скачать сайт.
Это, конечно, далеко всё, что можно и нужно реализовать, но, тем не менее

Думаю вы имели ввиду «далеко не все» :) Исправте! А так, статья самое то для познания python, хорошо разжевана!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории