Вступить в клуб →
лёгкаявопросСети в Linux: сокеты, epoll и Boost.Asio

Под нагрузкой сервер получает два JSON-сообщения склеенными

Клиент отправляет каждое сообщение отдельным вызовом send(). Сервер читает так:

char buf[4096];
ssize_t n = recv(fd, buf, sizeof buf, 0);
handleMessage(json::parse(std::string_view(buf, n)));

На тестах всё работает, а под нагрузкой парсер падает на данных вида {"op":"buy"}{"op":"sell"}. Как это исправить?

  • Ввести в протокол границы: длину или разделитель
  • Отправлять каждое сообщение отдельным соединением
  • Увеличить буфер recv до размера сообщения
  • Вызывать send с флагом, запрещающим склейку

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела