|
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 35
|
|
Простой веб-сервер с directories walk28.09.2017, 17:31. Показов 3975. Ответов 24
Метки нет (Все метки)
В общем, на просторах инета уже многовато поискал информации, но сложновато все структуризировать и создать свой план действия. Смотрим скриншот, что мне нужно. Дальше я бы хотел услышать как мне лучше всего это сделать. Возможно у вас даже есть ссылки на готовое, чтоб можно было засесть и разбирать по строчке сам код.
0
|
|
| 28.09.2017, 17:31 | |
|
Ответы с готовыми решениями:
24
простой веб-сервер Простой веб сервер простой веб сервер |
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 28.09.2017, 17:55 | |
|
TatiusWazo, А причем тут Python? Тебе надо брать apache or nginx и все.
0
|
|
|
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 35
|
|
| 28.09.2017, 19:49 [ТС] | |
|
alex925, это нужно на пайтоне написать, используя библиотеку сокет.
0
|
|
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 28.09.2017, 20:29 | |
|
TatiusWazo, Ну в этом случае предыдущее сообщение все равно не отменяется, web сервер в любом случае нужен.
Теперь следующий вопрос, зачем тебе писать вебню именно на сокетах? На сокетах пишут специфические вещи только (чаты и т д), вебню на голых сокетах не пишут.
0
|
|
|
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 35
|
|
| 28.09.2017, 22:12 [ТС] | |
|
alex925, такое задания дали и ты меня не совсем понимаешь, точней я не все рассказал.
В общем, суть задания: Кликните здесь для просмотра всего текста
Написать веб-сервер, используя библиотеку socket
Программа должна предоставлять доступ к файлам в директории, из которой она была запущена. Должна быть возможность ходить по директориям При переходе на файл должно воспроизводиться его содержание Т.е., я вроде и имею некую представленность как и что писать, но как все в купу сложить - нет. Программирования учу вторую неделю только, наверное такое пишеться за пару часов, но я что-то в тупике.
0
|
|
|
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
| 29.09.2017, 07:52 | |
|
TatiusWazo, Ну тогда открываешь гугл и вперед. Матчасти там много, на форуме так не расскажешь все.
Вот пример простой статьи https://ruslanspivak.com/lsbaws-part1/ и подобных гуглится уйма https://www.google.com/search?... 40&bih=714
0
|
|
|
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 35
|
|
| 29.09.2017, 15:39 [ТС] | |
|
alex925, я все это читал уже)
Но, как мне реализовать именно ту часть, чтоб я мог перемещаться между папками, как на скриншоте, который я прикрепил в ОП посту? Видел уроки с "directories walk", но они мне ничего не говорят, как реализовать это. Какой-то бы пример наглядный увидит.
0
|
|
|
|
|||||||||
| 29.09.2017, 22:57 | |||||||||
Сообщение было отмечено TatiusWazo как решение
Решение
Нарисовал так сказать just for fun... Очень примитивный, без всяких css украшений и javascript примочек, а также должной обработки ошибок. ---------------------------------------- Ну если хочется
1
|
|||||||||
|
|
||||||
| 30.09.2017, 01:44 | ||||||
|
Если добавить это перед 55 строкой - появится ссылка для перехода в родительский каталог
1
|
||||||
|
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 35
|
||
| 30.09.2017, 04:46 [ТС] | ||
|
Очень благодарен, таки много есть разбирать ![]() Возможно даже время от времени буду сюда что-то писать по вопросам. Еще и сколько новых библиотек) Я думал, самый простой веб-сервер с моим заданием, где-то на 15-20 строчек. Моя серверная часть была написанная на 7 строк и мне говорили, что этого хватает)
0
|
||
|
|
|||||||||||||||||
| 30.09.2017, 14:19 | |||||||||||||||||
![]()
Кстати, стоит залезть в его внутренности, чтобы посмотреть - а как там все это реализовано. (Я и сам чего-то протупил - и не глянул.) Сокеты это слишком низкий уровень - работа с байтовыми данными, которые помимо декодирования, потом еще и распарсить нужно. Поэтому коротко не выйдет. Впрочем, написать бесполезный ничего не делающий web-server на 7 строк вполне можно, но смысл :-) Добавлено через 57 минут P.S. Посмотрел код http.server и увидел некоторые свои ошибки и недочеты. В частности, никакой javascript: document.location.href в ссылке для перехода нафиг не нужен. Достаточно наличия правильно сформированной относительной ссылки.Добавлено через 4 минуты То есть вместо строки 37 достаточно
В конечном итоге функция generate_html упрощается до такого варианта:
1
|
|||||||||||||||||
|
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 35
|
||
| 30.09.2017, 16:54 [ТС] | ||
|
Garry Galler, пользоваться готовыми модулями в стиле SimpleHTTPServer не разрешали, но я не знал, что как-то можно посмотреть серединку модуля, как там все реализовано.
https://docs.python.org/3/library/http.server.html Или имело ввиду, что такого такого плана https://hg.python.org/cpython/... PServer.py ?
0
|
||
|
|
||
| 30.09.2017, 17:20 | ||
|
Документация требуется, если нужно просто использование модуля, а исходный код - для понимания того, как это работает. Добавлено через 3 минуты P.S. Исходный код модуля http.server находится в папке Lib\http.
1
|
||
|
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 35
|
|||||||
| 30.09.2017, 19:39 [ТС] | |||||||
|
Так как я две недели только программирую, я еще тот нуб и вовсе не использую функции и какие либо проверки. Все же, твой код я разобрал где-то на 30%. К примеру, мой код смотрится как-то так:
0
|
|||||||
|
|
||
| 30.09.2017, 19:45 | ||
|
Чтобы были ссылками - нужно использовать правильный html код с элементами <a> и атрибутами href. А вот этого всего я не вижу. Тем более, что шаблон в переменной http_response работает только при использовании шаблонизаторов типа Jinja, а не сам по себе.
1
|
||
|
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 35
|
||||||
| 30.09.2017, 21:43 [ТС] | ||||||
|
Garry Galler, да вообще никак не выходит.
Это задание с веб-сервером отбило у меня все желания с программированием, ибо такие жесткие тупняки пошли одним за одним (: У меня вот даже не было понимания, что этот шаблон будет работать только с Jinja (не имею даже представления, что это). Имея такой код, только чтоб вместо "Hello, World!" оно отображало список директорий и я мог кликать по ним (как ваша функция "def generate_html(root)"?) Или тут все нужно переписывать?
0
|
||||||
|
|
||||
| 30.09.2017, 23:41 | ||||
|
1
|
||||
|
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 35
|
|||||||||||||||||||||
| 01.10.2017, 02:59 [ТС] | |||||||||||||||||||||
|
Garry Galler, потратил 2 часа, чтоб понять, что такое сокеты (а то раньше просто понимал, что это какой-то мостик между двумя процесами, которые между собой соединяются) и начал лучше понимать логику вашего кода, но все равно далеко от идеала.
1. Создаем сокет. def main(server, port) - тут мы создаем сокет: socket - Создаем сокет. bind - Привязываем к нему IP и порт. listen - Объявляем, что готовы принимать соединения. У меня это:
def route(conn, addr) - устанавливаем соединения и отправляем данные с сети? receive - tmp = conn.recv(1024) - получаем данные с сети в 1кб. а остальное уже связанное как раз с отображением generate_html, да? в общем, def route я не совсем понял, вроде и все просто, но одновременно очень запутано для меня, так как нужно отлично понимать ту часть кода, которая до него встречается. У меня это:
def send_answer(conn, method="GET", protocol="HTTP/1.1", status="200 OK", charset="utf-8", typ="text/plain", data="") - отправка данных. Я так понимаю, тут мы делаем читабельной формат верхних аргументов? У меня это:
Это у нас в def main(server, port) происходит. У меня это:
0
|
|||||||||||||||||||||
|
|
||||||
| 01.10.2017, 14:57 | ||||||
|
Посмотри функцию list_directory в http.server.py - там все сделано по тому же принципу что и у меня, только вместо конкатенации используется массив строк, которые затем соединяются в одну посредством join, кодируются в байты и отправляются клиенту(браузеру).
0
|
||||||
|
0 / 0 / 0
Регистрация: 12.09.2017
Сообщений: 35
|
||||||
| 02.10.2017, 17:07 [ТС] | ||||||
|
Garry Galler, что ж, все до сих пор без результатов.
Какой-то прогресс даже был, ссылки генерировались, но их не можно было открыть в браузере (код был до усрачки кривой с множеством костылями, как не крути). Если у вас будет время и желание над этим посидеть, буду благодарен, если еще раз посмотрите.
0
|
||||||
| 02.10.2017, 17:07 | |
|
Помогаю со студенческими работами здесь
20
Простой веб-сервер Как написать простой веб сервер
Посоветуйте простой веб сервер для картинок Решить проблему: простой веб сервер на основе boost::asio падает именно при первом же обращении к серверу Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536
Одним из. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|