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

Второй клиент подключается, но ответ получает только после первого

for (;;) {
    int client = accept(listen_fd, nullptr, nullptr);
    serveUntilClosed(client);   // читает запросы, пока клиент не отключится
    close(client);
}

Пока первый клиент держит соединение открытым, второй успешно подключается (connect возвращает 0), но ответов не получает. Почему connect проходит и что изменить?

  • Ядро принимает в очередь, а код обслуживает одного
  • accept возвращает один сокет на всех клиентов
  • Нужен второй вызов listen для второго клиента
  • Порт занят первым клиентом до его отключения

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

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

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

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