@Bartar

Сервер на Си, как и зачем?

Хотим с друзьями написать небольшой сервер, который работал бы как через сокеты напрямую так и с http запросами. Дайте направление, где читать и что искать на эту тему, а так же я где то читал что писать сервер на си это "дурной тон" хотел бы узнать почему ?)Спасибо
  • Вопрос задан
  • 2946 просмотров
Решения вопроса 1
TrueBers
@TrueBers
Гуглю за еду
libuv
libevent

Самые шустрые и распространённые библиотеки.
Первая используется в ядре Node.js.
Вторая — в куче проектов типа хрома, тора, файрфокса, мускуля. Умеет http-роутер из коробки.

На Си дурной тон писать сервер, когда не знаешь Си. Бред наркомана.
90% всех существующих серверов написано на Си. Другое дело, что надо знать одновременно и язык, и тонкости ОС, и тонкости сетей, уметь пользоваться профилировщиками памяти. Ну, и времени нужно очень приличное количество.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
15432
@15432
Системный программист ^_^
На Си легко "выстрелить себе в ногу" и упустить утечки памяти, переполнение буфера, гонки данных в параллельных потоках. Убедился в этом при создании похожего проекта.

Почитать - если стремитесь к максимальному быстродействию, разберитесь как работать с epoll и неблокирующими сокетами. Для работы по HTTP почитайте спецификацию и какие поля могут быть, как их парсить и обрабатывать, и т.д. Для парсинга пригодятся state-машины (это уже "основы конструирования компиляторов", по теме есть много вузовских учебников). Работа с сокетами напрямую подразумевает некий кастомный протокол - нужно придумать соглашения по формату передаваемых данных (заголовок, пакеты, и т.д.)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы