Только accept()
одно соединение.
Вот типичная серверная процедура:
s = socket(...);
bind(s, ...);
listen(s, backlog);
while (-1 != (t = accept(s, ...))) {
// t is a new peer, maybe you push it into an array
// or pass it off to some other part of the program
}
Каждый завершенный accept()
вызов возвращает дескриптор файладля нового соединения.Если вы хотите получить только одиночное соединение, только accept()
один раз.Предположительно, вы закончили прослушивание после этого, поэтому закройте свой сервер тоже:
s = socket(...);
bind(s, ...);
listen(s, backlog);
t = accept(s, ...);
close(s);
// do stuff with t
Если вы хотите обрабатывать только одно соединение за раз, и после того, как это соединение закрывается, возобновите прослушивание, затем выполните accept()
петля выше, и принимайте дальнейшие соединения, пока t
не закроется.