Комментарии 4
Извини, пожалуйста, но считаю, что педагогическая ценность этой статьи близка к нулю, не говоря о том, что не покидает ощущение, что статья сгенерена какой-то ллмкой.
Если раскрыть тезис о педагогической бесполезности, то я бы выделил 2 момента:
Использование сторонней либы. Почитать доку не сильно сложно. Намного полезнее с точки зрения обучения заюзать хотя бы стд либу, написать больше кода, но объяснить процессы.
Отсутствие глубины теоритической, да и практической, если честно. Просто переписать код с комментами... опытному чуваку и так всё понятно, а новичок вряд ли вынесет что-то осознанное.
В общем, вот. Сорян, если что. И прям вот как будто чатгпт написал...
Все верно, без какой-то теории статья просто кусок кода, коих и на гитхабе полно. Ну и c чатжпт в точку. А вот интересные вопросы хотелось бы затронуть.
1) Файловый сервер который одновременно может обсуживать только одного клиента? Подняв планочку до C++20 можно было бы минимальными телодвижениями улучшить это
2) А что если придет relative url? Клиент сможет выбраться за пределы root path
3) Для отправки файла не обязательно костылить цикл с буфером. boost.beast из коробки проворачивает нечто похожее для отправки файлов (см. http::file_body)
Если вы включаете -std=c++17, то можно использовать std::filesystem
вместо boost::filesystem
.
Ещё, у вас сервер синхронный, т.е. если какие-то дисковые операции выполняются медленно, или застревают, то остальные клиенты просто ждут, и диск у вас получается "узким местом". Например, у вас файловая система по NFS.
boost::program_options для человеческого разбора командной строки.
Весь код из статьи выглядит как туториал из буста. Остальное уже написали :)
В чём же заключается «обучение»?
Создание файлового сервера на c++ и Boost