![]() |
|
Модераторы: feodorv |
![]()
|
|
| Alexey91 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
Здравствуйте!
Разбираюсь с сокетами в Unix на основе статей http://www.rsdn.ru/article/unix/sockets.xml, wikipedia, citforum Я не понимаю работу функций listen, accept.. Функция listen делает сокет "прослушивающим соединения". Первый параметр - сокет, который будет прослушивающим. В википедии написано, что второй параметр - это число соединений, которые могут быть обработаны одновременно. В статье на rsdn это размер очереди соединений. Я все-таки подразумеваю под очередью, обработку одного соединения в один момент времени. Далее этот прослушивающий сокет используется в функции accept. Функция accept() принимает запрос на соединение, и в случае успеха возвращает дескриптор сокета, который используется для обмена данными по соединению. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
как по мне, так это одно и то же. размер очереди ожидающих соединений.
что значит "обработку" ? да. вопрос в чем? |
|||
|
||||
| Alexey91 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 195 Регистрация: 18.9.2008 Репутация: нет Всего: нет |
boostcoder,
по поводу accept я хотел удостовериться в том правильно ли я понял. по поводу listen. Если написано "очередь", то я представляю змейку людей стоящих у кассы. И кассир в один момент времени что-то делает только с одним человеком из очереди. Когда этот человек ушел, на его место встает другой, и кассир что-то делает с ним. И под обработкой я имел ввиду то, что функция accept извлекла соединение, связала его с сокетом, с помощью это сокета была послана\принята информация, сокет закрыли. Потом берем следующий сокет из очереди и он также "обрабатывается". И собственно вопрос, обработка эта происходит одновременно для всех соединений, или последовательно (сначала одно обработалось, потом другое)? То есть на сервер пришло 5 соединений. backlog=5, эти все 5 сразу обработались? Или последовательно? У меня видимо когнитивный диссонанс |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
последовательно. по одному чуваку из очереди в один момент времени. |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 10 Всего: 45 |
А когда комната переполнилась, то новых людей людей в очередь уже не пускают))) Это алгоритм последовательного сервера. Но ведь можно устроить обработку запросов параллельно (несколько одновременно работающих кассиров, но пользовательский объём комнаты остаётся прежним) - не обязательно нужно дожидаться конца обработки какого-то запроса, чтобы приступить к обработке нового. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Олег2005 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Посмотрите вот здесь
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |