![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
всем привет.
интересует такой вопрос.. сервер мониторит дескрипторы сокетов на предмет изменения их состояния со стороны клиента. я вот о чем подумал: допустим, мне нужно чтоб клиент, так же, асинхронно, как и сервер, мог мониторить их на предмет изменения их состояния со стороны сервера. т.е. чтоб оба участника сессии могли одновременно быть и ведущими и ведомыми. такое возможно? спасибо. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
если сервер сам сообщает каждому клиенту о том, что остальные клиенты (сокеты) изменили свое состояние
для этого, видимо, клиент должен открыть два соединения с сервером: одно обычное, второе - для мониторинга это если я правильно понял суть ;) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
как бы да... но уточню. хотелось бы сделать так, чтоб клиент мог мониторить дескриптор. вроди бы мы поняли друг-друга... если я вас правильно понял, то клиент по одному соединению общается с сервером обычным образом, а второе использует так же как и сервер, для мониторинга, так? |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
по первому соединению "общаемся" по протоколу
по второму получаем от сервера информацию о других клиентах как-то так -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
запутали.
поясню: хочу сделать так, чтоб клиент, так же как и сервер, мог определять изменение на сокете. т.е. чтоб оба были инициаторами сессии. клиент постучал на сервер, переключился в режим прослушивания сокета, сервер ответил, клиент получил событие изменения состояния сокета, и т.д.. не знаю как еще это объяснить.. Это сообщение отредактировал(а) boostcoder - 18.10.2010, 11:25 |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
connect() со стороны клиента вот здесь не понял то ли имеется в виду listen(), то ли добавление в epoll для получения ивэнтов... -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
в этом то и вопрос. как реализовать задумку? чтоб клиент не тупо ожидал заранее известного ему события(чтения/записи). а слушал сокет на предмет появления на нем событий. Добавлено через 1 минуту и 58 секунд мне тут подсказывают, что наверняка мне нужен бэкконнект.. пошел в гугл.. Добавлено через 4 минуты и 52 секунды бэкконнект - позволяет подключаться к юзеру за натом. это не то. у меня юзер сам подключается к серверу. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
чет я все равно не догоняю, что надо
![]() разбираемся listen() надо для того, чтобы сделать сокет прослушивающимся, т. е. чтобы _получать_ новые коннекты еще раз, после конеекта от клиента к серверу что должен делать клиент? т. е. какая и о чем ему нужна информация? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
![]() случаев взаимодействия всего два : 1. постоянно слушать - т.е опрос состояния 2. ждать события - тот же колбяк что Вам нужно не понятно .. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Насколько я понял из туманных вопросов ТС, он хочет использовать epoll на обоих сторонах сокета (на сервере и у клиента). Это вполне возможно, epoll'у глубоко фиолетово, кто к кому подключался (если конечно от него хотят не мониторинг именно подключения). Собственно обмен данными (чтение/запись) в сокетах абсолютно симметричны, как со стороны сервера, так и со стороны клиента.
|
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
именно! я вроде так и объяснил.. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
boostcoder,
плин с моей т. з. это очевидно и в эту сторону я даже не думал... epoll'у в принципе все равно, что в него засовывают лишь бы объект был валиден и поддерживал poll -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
все, понял. прежде чем код писать, хотел убедится что это возможно с теоретической т.з. мне казалось, что epoll() привилегия только одной из сторон в сессии. всем спасибо. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |