// HTTP сервер на чистом Си //

Поделиться
HTML-код
  • Опубликовано: 9 ноя 2024
  • НаукаНаука

Комментарии • 41

  • @ONlogN-p2o
    @ONlogN-p2o 3 месяца назад

    не понимаю почему так мало лайков, целый день искал подобное видео. Хотел было уже у индусов начать смотреть, а тут вдруг это золото

  • @sergchanel5948
    @sergchanel5948 2 года назад +5

    Однозначно лайк и звезду на Гите , сразу видно что Профи, за Мэйк файлы отдельное спасибо

  • @dungeonmaster6431
    @dungeonmaster6431 4 года назад +13

    Наконец-то возвратился спустя месяц, продолжай делать контент!

  • @nunvolk3456
    @nunvolk3456 4 года назад +2

    Спасибо за видос!

  • @5elll960
    @5elll960 4 года назад +11

    Чистый си... так и до unix way не далеко )

  • @drimgo_yt
    @drimgo_yt 4 года назад +2

    Очень круто!

  • @wannacry3730
    @wannacry3730 2 года назад

    Вы большой молодец.

  • @famousman6400
    @famousman6400 3 года назад +1

    сервер работает только с одним клиентом... хотелось бы больше увидеть про работу с множеством пользователей)

  • @javidaliyev310
    @javidaliyev310 4 года назад +2

    Отличный сервер!

  • @superninja2749
    @superninja2749 4 года назад +1

    Спасибо!

  • @MrRiseful
    @MrRiseful 3 года назад +3

    Сделай пожалуйста ролик теперь о клиенте на чистом си ;)

  • @НекЕттАЗимов
    @НекЕттАЗимов 8 месяцев назад

    скачал с гита, пробуй запустить, все вроде работает, но почему-то нет информации в консоле о запросе. Может подскажет кто... Использую Linux Fedora

  • @lokomanako8830
    @lokomanako8830 6 месяцев назад

    а почему бы не использовать какой нибудь редактор с авто комплитом?

  • @5elll960
    @5elll960 4 года назад +1

    %cryptofun%, а у вас нет роликов по проектированию крупной софтинки в соотв. с какой-либо парадигмой?
    Пример - проектирование анализаторов сетевых пакетов\памяти(тип ваиршарка/аутопсай) в ооп или в мультипарадигме.
    Я б глянул. Спасибо

    • @CryptoFunIT
      @CryptoFunIT  4 года назад +1

      Видео по проектированию нет, по разработке пока что тоже. Если исходить из крупных софтин, то можно представить HiddenLake ( github.com/Number571/HiddenLake ), но там я не придерживался конкретно одной парадигмы, а совмещал ПП и ООП (HL представляю, чаще всего, в симбиозе с gopeer), что впринципе чаще всего и происходит при написании программ на языке Go.

  • @dzingrey7315
    @dzingrey7315 4 года назад +1

    Почему при открытии терминала и компилировании make выдает ошибку?

    • @CryptoFunIT
      @CryptoFunIT  4 года назад +2

      Сначала необходимо скомпилировать библиотеку, перейдя в директорию extclib/ и прописав make. Только после этого, нужно скомпилировать main.c с объектным файлом extclib/extclib.o прописав make в корневой директории httpServer/.

  • @ВладиславГришин-ш7ш
    @ВладиславГришин-ш7ш 6 месяцев назад +1

    на каком стандарте Си писали?

  • @archyt88
    @archyt88 Год назад

    😅

  • @ФилиппДруан
    @ФилиппДруан 4 года назад

    Скажите, не у вас ли я находил видео с реализацией блокчейна?

    • @CryptoFunIT
      @CryptoFunIT  4 года назад

      Возможно. Было видео по блокчейну на языке программирования Go, но видео я скрыл, так как посчитал его достаточно поверхностным. Там лишь говорилось о связи блоков, без всякой работы с сетью. Тем не менее, хоть видео и скрыты от широкой публики, они доступны по ссылкам. В описании указанного видео ( ruclips.net/video/YCVfxZM-A90/видео.html ) находятся ссылки на скрытые плейлисты и видео.

    • @ФилиппДруан
      @ФилиппДруан 4 года назад

      @@CryptoFunIT
      Я сам хотел бы использовать блокчейн. Объясните, будет ли достаточно просто хешировать предыдущий блок и хеш-сумму приписывать к текущему?
      Есть ли блокчейн библиотеки для Common Lisp, может, вы слышали о них?

    • @CryptoFunIT
      @CryptoFunIT  4 года назад +2

      @@ФилиппДруан Хешировать предыдущий блок и приписать результат к новому достаточно легко. По-идее это можно охарактеризовать следующим псевдокодом:
      prevHash = Hash(Concat(Data(prevBlock)));
      // где
      // функция Data - берёт все поля объекта prevBlock;
      // функция Concat - конкатенирует данные в одну строку;
      // функция Hash - вычисляет хеш-сумму;
      newBlock = NewBlock(newData, prevHash);
      // где
      // функция NewBlock - создаёт объект (подобный prevBlock) исходя из его данных (подобия транкзации, отправителя, получателя) и хеш-суммы предыдущего блока.
      Если углубляться в теорию того, какая должна быть выбрана Hash функция, то лучше использовать выбранную функцию из семейства SHA-2, SHA-3 с алгоритмом HMAC, для повышения безопасности (подробнее об этом можете почитать в книге Практическая криптография от авторов Фергюсона и Шнайера, Часть I, Глава 6. Функции хэширования).
      На счёт библиотек связанных с блокчейном в языке Common Lisp ничего не знаю.

    • @ФилиппДруан
      @ФилиппДруан 4 года назад +1

      @@CryptoFunIT
      Спасибо! Попытаюсь в качестве упражнения сделать блокчейн по схеме "хешируем предыдущий, прибавляем к текущему".
      А будут видео по Lisp? На мой взгляд, чрезвычайно изящная концепция.

    • @CryptoFunIT
      @CryptoFunIT  4 года назад +3

      @@ФилиппДруан в ближайшем будущем видео по LISP не планируются. Всё из-за того, что сложно подобрать хорошие темы с данным языком. Я давно ушёл от видео связанных с обучением конкретному языку, так как для меня это оказалось скучно, да и получалось на выходе также плохо. А делать видео более сложного характера с этим языком, будет мало кому интересно, потому что в отличие от императивных языков, языки функциональные не каждый человек знает и понимает. А сама концепция таких языков действительно интересна, когда парадигма даёт ещё бОльший уровень абстракций, нежели имеющийся сегодня, и заместо терминов, связанных с памятью и переменными, даёт свойства чистых функций и вычислений без состояний (по крайней мере пытается).

  • @gocoding4742
    @gocoding4742 4 года назад

    Ты серьёзно используешь strcmp ? А как же buffer overflow? Как раз считай от пользователя идёт ввод путя

    • @CryptoFunIT
      @CryptoFunIT  4 года назад +3

      Путь ограничен в 2048 байт (прописано в структуре HTTPreq) и строка гарантированно имеет нуль-терминатор (прописано в функции _parse_request ).

  • @dzingrey7315
    @dzingrey7315 4 года назад

    Не думал записывать уроки по си или плюсам, пишешь вроде на плюсах часто, по крайней мере крипту, а я думаю ,что многие не знают плюсы?

    • @CryptoFunIT
      @CryptoFunIT  4 года назад +8

      Я не пишу на плюсах, их могу знать только на уровне классического Си и не более. Видео связанные с обучением языков я давно перестал делать. Мне это было скучно, да и получалось на выходе также плохо (исключение лишь язык ассемблера, но и там я целью ставил создание библиотеки с переносом концепций и принципов высокоуровневых языков в низкоуровневый, а обучением можно было лишь считать эту связь, благодаря которой можно создать некоторые ассоциации с высокоуровневыми языками). Соответственно, задачу обучения языкам я возлагаю на сторонние видео, сайты, книги и прочие ресурсы. На этом же канале предпочитаю выпускать уже готовые (или дающие о чём-то представление) программы на выбранном мною языке программирования (Go, Си, ASM).

  • @sledleo
    @sledleo 2 года назад

    Https и websocket будут?

    • @helloworld-fv8kx
      @helloworld-fv8kx 2 года назад

      привет, подскажите нашли ли вы что-то полезное по https, я не могу найти ничего полезного...

  • @killerferplay614
    @killerferplay614 2 года назад

    У тебя манджара ?

  • @ythosa0
    @ythosa0 4 года назад

    Ха-ха net/http из Go переписал

  • @оксидводорода2
    @оксидводорода2 Год назад +1

    написано безобразно, ты сам понимаешь что делаешь ?

    • @sucker7032
      @sucker7032 10 месяцев назад +1

      а что тут собственно безобразного?

  • @natuscoding8143
    @natuscoding8143 3 года назад +1

    socket(), setsockopt(). Это же всë функции из стандартной (мультиплатформенной) библиотеки socket в python. Зачем такая боль?

    • @CryptoFunIT
      @CryptoFunIT  3 года назад +5

      В стандартах C89, C99, C11 языка Си нет никаких библиотек работающих с сетью. Данные библиотеки представлены операционными системами и уже их стандартами соответственно, подобия POSIX. В python модуль socket представлен самим языком и абстрагирован от зависимостей и особенностей интерфейсов ОС.

  • @seledkaadekvat6618
    @seledkaadekvat6618 4 года назад +1

    невозможно смотреть, автор мычит, заикается, каждую секунду что-то переключает, ничего не объясняет как это работает, приходится ловить момент на паузе чтобы он показал какой-то кусок кода, потому что его не видно.

    • @natuscoding8143
      @natuscoding8143 3 года назад

      Откуда такое самомнение. Вы сын Трампа?

    • @seledkaadekvat6618
      @seledkaadekvat6618 3 года назад

      @@natuscoding8143 Да.

  • @СергійМаляєв-д3ч
    @СергійМаляєв-д3ч 9 месяцев назад

    при компиляции этой программы на виндовс 10 вылетела ошибка gcc -Wall -std=c99 -c http.c net.c hashtab.c tree.c type.c
    http.c:21: error: redefinition of typedef 'HTTP'
    http.h:14: error: previous declaration of 'HTTP' was here
    hashtab.c:16: error: redefinition of typedef 'HashTab'
    hashtab.h:9: error: previous declaration of 'HashTab' was here
    tree.c:26: error: redefinition of typedef 'Tree'
    tree.h:9: error: previous declaration of 'Tree' was here
    make: * [Makefile:17: build] Error 1