Я не уверен, играет ли функция listen()
какую-либо роль в этом.Это должно быть в бесконечном цикле?
Нет.listen()
устанавливает свойство сокета, помечая его как пассивный сокет, с помощью которого программа может принимать соединения.Нет необходимости делать это более одного раза.Не забудьте сначала bind()
сокет (что также следует сделать только один раз).
Должен ли я одновременно прослушивать только одно клиентское соединение?
Это не совсем концепция, которую предоставляет интерфейс сокетов, хотя есть связанная концепция того, сколько соединений, ожидающих принятия, могут быть поставлены в очередь для сокета одновременно.Это управляется вторым параметром listen()
.
Когда я вызываю функцию прослушивания, я передаю дескриптор файла сокета и количество соединений, которое в моем случае я передаю 5. Я делаюне запускайте это в цикле или чем-то еще, я просто называю это один раз.
Это именно то, что вы должны сделать, но это не only , что вы должны делать.
Однако я не думаю, что это правильный способ сделать это с учетом необходимой реализации
Возможно, вам не хватает того, что после вызова listen()
вы должны использовать *Функция 1030 * для фактического приема соединений. Это - это то, что вы хотите запустить в цикле.Вы можете принять любое количество подключений от одного и того же прослушивающего сокета.