Второй клиент подключается, но ответ получает только после первого
for (;;) {
int client = accept(listen_fd, nullptr, nullptr);
serveUntilClosed(client); // читает запросы, пока клиент не отключится
close(client);
}
Пока первый клиент держит соединение открытым, второй успешно подключается (connect возвращает 0), но ответов не получает. Почему connect проходит и что изменить?
- Ядро принимает в очередь, а код обслуживает одного
- accept возвращает один сокет на всех клиентов
- Нужен второй вызов listen для второго клиента
- Порт занят первым клиентом до его отключения
