Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по функциям сокетов Беркли 
V
    Опции темы
Alexey91
  Дата 21.4.2012, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Здравствуйте!

Разбираюсь с сокетами в Unix на основе статей http://www.rsdn.ru/article/unix/sockets.xml, wikipedia, citforum
Я не понимаю работу функций listen, accept..

Функция listen делает сокет "прослушивающим соединения".

Первый параметр - сокет, который будет прослушивающим.
В википедии написано, что второй параметр - это число соединений, которые могут быть обработаны одновременно. В статье на rsdn это размер очереди соединений.
Я все-таки подразумеваю под очередью, обработку одного соединения в один момент времени.

Далее этот прослушивающий сокет используется в функции accept.
Функция accept() принимает запрос на соединение, и в случае успеха возвращает дескриптор сокета, который используется для обмена данными по соединению.
PM   Вверх
boostcoder
Дата 21.4.2012, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



Цитата(Alexey91 @  21.4.2012,  12:03 Найти цитируемый пост)
Функция listen делает сокет "прослушивающим соединения".

Первый параметр - сокет, который будет прослушивающим.
В википедии написано, что второй параметр - это число соединений, которые могут быть обработаны одновременно. В статье на rsdn это размер очереди соединений.

как по мне, так это одно и то же.
размер очереди ожидающих соединений.


Цитата(Alexey91 @  21.4.2012,  12:03 Найти цитируемый пост)
подразумеваю под очередью, обработку одного соединения в один момент времени

что значит "обработку" ?

Цитата(Alexey91 @  21.4.2012,  12:03 Найти цитируемый пост)
Далее этот прослушивающий сокет используется в функции accept.
Функция accept() принимает запрос на соединение, и в случае успеха возвращает дескриптор сокета, который используется для обмена данными по соединению. 

да. вопрос в чем?

PM WWW   Вверх
Alexey91
Дата 21.4.2012, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



boostcoder,
по поводу accept я хотел удостовериться в том правильно ли я понял.

по поводу listen.

Если написано "очередь", то я представляю змейку людей стоящих у кассы. И кассир в один момент времени что-то делает только  с одним человеком из очереди. Когда этот человек ушел, на его место встает другой, и кассир что-то делает с ним.

И под обработкой я имел ввиду то, что функция accept извлекла соединение, связала его с сокетом, с помощью это сокета была послана\принята информация, сокет закрыли. Потом берем следующий сокет из очереди и он также "обрабатывается".

И собственно вопрос, обработка эта происходит одновременно для всех соединений, или
последовательно (сначала одно обработалось, потом другое)?
То есть на сервер пришло 5 соединений. backlog=5, эти все 5 сразу обработались? Или последовательно?

У меня видимо когнитивный диссонанс  smile 
PM   Вверх
boostcoder
Дата 21.4.2012, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



Цитата(Alexey91 @  21.4.2012,  15:41 Найти цитируемый пост)
И собственно вопрос, обработка эта происходит одновременно для всех соединений, или
последовательно (сначала одно обработалось, потом другое)?
То есть на сервер пришло 5 соединений. backlog=5, эти все 5 сразу обработались? Или последовательно?

последовательно.
по одному чуваку из очереди в один момент времени.

PM WWW   Вверх
feodorv
Дата 22.4.2012, 03:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 10
Всего: 45



Цитата(Alexey91 @  21.4.2012,  16:41 Найти цитируемый пост)
Если написано "очередь", то я представляю змейку людей стоящих у кассы. И кассир в один момент времени что-то делает только  с одним человеком из очереди. Когда этот человек ушел, на его место встает другой, и кассир что-то делает с ним.

 А когда комната переполнилась, то новых людей людей в очередь уже не пускают)))


Цитата(Alexey91 @  21.4.2012,  16:41 Найти цитируемый пост)
И под обработкой я имел ввиду то, что функция accept извлекла соединение, связала его с сокетом, с помощью это сокета была послана\принята информация, сокет закрыли. Потом берем следующий сокет из очереди и он также "обрабатывается".

Это алгоритм последовательного сервера. Но ведь можно устроить обработку запросов параллельно (несколько одновременно работающих кассиров, но пользовательский объём комнаты остаётся прежним) - не обязательно нужно дожидаться конца обработки какого-то запроса, чтобы приступить к обработке нового.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Олег2005
Дата 23.4.2012, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



Посмотрите вот здесь
PM MAIL WWW MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0649 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.