![]() |
Модераторы: Daevaorn Страницы: (89) « Первая ... 6 7 [8] 9 10 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
boostcoder |
|
||||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
вот.
даже работает ![]() честно признаюсь, я догадывался что оно должно работать именно так, потому и создал на днях эту тему. но что-то меня отвлекло.. сервер:
собирать так:
клиент:
собирать так:
|
||||||||
|
|||||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
![]() итак старт положен.. "сырые" данные можете отправлять.. чтоб не путаться назовем объекты этого уровня net_client и net_server.. теперь создаем еще одного clienta, который будет посредством net_client`a отправлять уже типизированные сообщения.. и еще один сервер, который на основе net_servera будет по id в карте вызывать нужный диспетчер для начала диспетчер такого вида :
|
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
в следующем варианте, и клиент и сервер, изначально должны находится в режиме чтения. так?
зы вот теперь я точно понял идею ) |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
речь идет о сокетах ? вообще то должны быть в режиме ожидания, готовые к двусторонней передаче.. т.е как для записи, так и для чтения.. ( я говорю с точки зрения пользователя сокета.. как там внутри я не знаю ) |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
т.е. после подключения, клиент и сервер становятся в операцию асинхронного чтения на сокете? полагаю, так логичнее. т.к. изначально мы не зависим от того, кто ведущий а кто ведомый. и любой из них может первым послать пакет.
|
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вобще-то это уже будет не сервер..а сессия (или удаленный client.. ) но так как у нас (насколько я понял) сервер на одного клиента, то пока пойдет, потом будет виднее где подправить ![]() Добавлено @ 16:31 ![]() я был против выражения "установлен на чтение", так как тогда логически не возможна запись.. но если не воспринимать буквально, то все верно ![]() Добавлено через 3 минуты и 9 секунд
значит все таки столько страниц темы были не напрасны ![]() Это сообщение отредактировал(а) mes - 27.10.2010, 16:32 |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
к примеру: клиент подключился к серверу. оба читают из сокета.
сервер производит запись. но т.к. клиент ожидает записи в сокет, он читает пакет, снова становится в режим чтения, что-то выполняет с прочитанным пакетом. так? еще любопытно, каким образом можно реализовать пакеты двух типов? т.е. пакеты на которые нужно посылать ответ, и пакеты без ответов? Добавлено через 7 минут и 38 секунд ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
висят себе два сокета никого не трогют, в один написали, друг подал сигнал, и его прочитали.. ![]() Добавлено через 30 секунд
никаким образом этого не нужно ( и не придется) делать ![]() |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
если я все правильно понял, то вот.
код компилиться, но не завершен, т.к. некоторые моменты не ясны. а именно: 1. клиент, при посылке команды, каким образом будет знать, на какую команду ждать ответа, а на какую нет? 2. серверу, чтоб послать ответ на какую-то команду, так же как и клиенту нужно знать, на какую команду отвечать, а на какую нет. хидер:
реализация:
|
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
опять )) ничего лишнего ! ) только то что было в задании ) ну ладно .. сервер не посылает ответ, как таковой, он просто принимает команды и работает и побрабатывает их.. если ему когда нибудь (в зависмости от логики обработки, и независимо от приема команды клиента) захочеться послать клиенту команду, он просто ее посылает.. ![]() сейчас код гляну Добавлено через 14 минут и 47 секунд посмотрел.. как и предполагалось по вступительным вопросам к коду.. опять вставили свою лепту.. ![]() ну в принципе ничего так, только надо вытащить нужное, и избавиться от лишнего.. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
по коду я понял, что у вас предполагается одинаковая база как для сервера, так и для клиента? это жесткая привязка, которая может заставить пользователя писать костыль.. это у Вас моноблок получается.. нехорошо.. к инвокерам претензий в принципе нет |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
пока оставим сервер в покое.. принимает - молодец, с него пока хватит..
(только к клиенту этот подход не применять, и не отходить от нашего нижепредложенного плана ) рассмотрим net_client... нам важны сейчас две его функции , отправки и приема сырых данных.. сырые данные (исходя из кода) у нас выражены как (header&, body&) на клиентена надо добавить два объекта.. rpc_sender и rpc_receiver выглядят так
привязка к net_clientу посредством bind. для проверки можно связать сендер и ресивер непосредственно .. и еще раз ничего лишнего ! ![]() фактически только реализовать сендер и привязку.. Это сообщение отредактировал(а) mes - 28.10.2010, 09:17 |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
это правда. я забежал вперед. просто в момент написания, мне казалось что идею я понял целиком..но когда дошло дело до отправки ответа, я понял, что ничего не понял.. т.е. команды для клиента и сервера разные? не связанные между собой? от чего именно избавится? это именно тот момент, из-за которого я недописал реализацию. ага. не могли бы вы изменить код приведенный выше, так, чтоб в нем небыло ничего лишнего? т.к. я не очень понимаю что именно я должен сделать.. Добавлено через 1 минуту и 20 секунд по последнему: вроде понял.. Добавлено через 3 минуты и 2 секунды т.е. мой код. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |