URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5349
[ Назад ]

Исходное сообщение
"Объясните начинающему"

Отправлено крендель , 18-Апр-06 05:52 
драсте всем и каждому.
вот кто бы на доступном русском языке (можно с матами)
объяснит мне назначение примитивов select() и poll().
Книги читал, но как то заумно. Объясните пжалста.

И второе. Предположим нужен TCP сервер. При подключении клиента
основной процесс форкает потомка, который обслуживает данного клиента.
А можно ли что бы один процесс обслуживал всех и каждого?!
Как сделать? Где почитать?

Не убивайте за такие вопросы, но все когда то начинали ;)
Спасибо.


Содержание

Сообщения в этом обсуждении
"Объясните начинающему"
Отправлено chip , 18-Апр-06 11:26 
>драсте всем и каждому.
>вот кто бы на доступном русском языке (можно с матами)
>объяснит мне назначение примитивов select() и poll().
>Книги читал, но как то заумно. Объясните пжалста.
>
>И второе. Предположим нужен TCP сервер. При подключении клиента
>основной процесс форкает потомка, который обслуживает данного клиента.
>А можно ли что бы один процесс обслуживал всех и каждого?!
>Как сделать? Где почитать?

На все вопросы ответы найдёте в Стивенсе.


"Объясните начинающему"
Отправлено nixsys , 18-Апр-06 17:58 
>драсте всем и каждому.
>вот кто бы на доступном русском языке (можно с матами)
>объяснит мне назначение примитивов select() и poll().
>Книги читал, но как то заумно. Объясните пжалста.
>
>И второе. Предположим нужен TCP сервер. При подключении клиента
>основной процесс форкает потомка, который обслуживает данного клиента.
>А можно ли что бы один процесс обслуживал всех и каждого?!
>Как сделать? Где почитать?
>
>Не убивайте за такие вопросы, но все когда то начинали ;)
>Спасибо.

select - мощная функция, действительно описана в Стивенсе.
Если не охота с ней заморачиваться используй /etc/inetd.conf и /etc/services , т.е. возможности супер-сервера inetd

http://qnx.org.ru/carticle1.html


"Объясните начинающему"
Отправлено michelnok , 18-Апр-06 21:30 
1. Книга Уолтона "Создание сетевых приложений в среде Linux. Руководство разработчика" (http://www.ozon.ru/context/detail/id/146260/)

(уровень и перевод слабые, но для начала пойдет)

2. Книга Стивенса "UNIX. Разработка сетевых приложений" (http://www.ozon.ru/context/detail/id/1390985/)
3. Книга Стивенса "Unix. Взаимодействие процессов" (http://www.ozon.ru/context/detail/id/1011815/)

(это уже "для профессионалов")

То что "заумно" - так ведь в дороге никто кормить не обещал.
Сервера писать - это не пасочки лепить, тут надо разбираться :)


"Объясните начинающему"
Отправлено SSuslov , 19-Апр-06 10:21 
>драсте всем и каждому.
>вот кто бы на доступном русском языке (можно с матами)
>объяснит мне назначение примитивов select() и poll().
>Книги читал, но как то заумно. Объясните пжалста.
>

Про poll ничего не скажу, не сталкивался. А вот select, в применении создания серверов, используется для проверки данных в дескрипторе. Т.е. когда создаешь слушающий сокет, тебе нужно как-то отловить момент, когда есть запрос от клиента (попытка подключения). Вот select и проверяет этот факт. А дальше ты либо fork'аешь новый процесс или создаешь поток или посылаешь далеко и надолго этого клиента или что-то еще.

>И второе. Предположим нужен TCP сервер. При подключении клиента
>основной процесс форкает потомка, который обслуживает данного клиента.
>А можно ли что бы один процесс обслуживал всех и каждого?!

Можешь использовать pthreads (man pthreads или в книгах). Это потоки. Каждый запрос обслуживется в отдельном потоке, но в одном процессе. Я думаю, что можно и по другому организовать взаимодействие, насколько хватит фантазии и умения.

>Как сделать? Где почитать?
>
>Не убивайте за такие вопросы, но все когда то начинали ;)
>Спасибо.