-
> про ресурсы ему еще рано
Тогда и делать ему пока нефига в индейских серверах. Не по сеньке шапка.
Есть TServerSocket, есть stNonBlocking - там ему "было проще всё, ну или понятней".
Какого лешего ему понадобилось лезть в индейские мультипоточные блокирующие дебри - до сих пор не понятно.
Было бы хотя бы вразумительное обоснование выбора Инди - был бы тогда и стимул вдалбливать ему про синхронизацию и прочую мультипоточную требуху. А так - что о стенку горох)
-
правильная конфигурация:
сервер постоянно читает запросы клиентов.
получив запрос клиента, отправляет ему ответ, затем снова читает/ждет следующий запрос.
рассылка всем клиентам сообщения по инициативе сервера:
сервер получает текст сообщения от администратора и ничего никуда не посылает. Запоминает его и ждет, когда клиент запросит " А нет ли для меня какого-нить сообчения?"
Получив подобный запрос клиента, сервер отдаети ему сообщение прямо в обработчике команд, без всяких локлистов и прочей ерунды.
-
> без всяких локлистов и прочей ерунды
В мультипоточном сервере без lock-тряхомудии вряд ли обойтись)
Другой вопрос - она нада ли автору, мультипоточность та самая ..
Впрочем, он и сам не знает.
-
локлист нужен для операций по инициативе сервера.
допустим что клиент у нас "событийный", а сервер "процедурный".
то есть все построено задом наперед.
тогда да.
лочим список коннектов, засылаем клиентам мессаджи и разлочиваем.
если же сервер посторить как строят его нормальные герои (ожидание запроса->обработка->посылка ответа ), то лочить ничего не надо.
все происходит либю в OnExecute, либо в диспетчерах прикладных команд.
Но нах юный друг хочет чтобы и сервер и клиент были одновременно и сервером им клиентом.
-
> лочить ничего не надо
Ну как же не надо ?
> все происходит либю в OnExecute, либо в диспетчерах прикладных
> команд
Все это происходит в контексте треда, обслуживающего текущий коннект.
И тред этот и обслуживаемый им коннект полностью изолированы от прочих тредов сервера, обслуживающих как прочие коннекты, так и внутрикухонные нужды сервера. Все эти треды сервера так или иначе, рано или поздно обязательно пересекутся на доступе к тому или иному потоконебезопасному ресурсу, а, значит, потребуется синхронизация. Как она д.б. реализована - то ли локами, то ли синхр.сообщениями, то ли задействованием иных объектов илои способов синхронизации - другой вопрос.
-
Ну это само собой разумеется.
Но я-то про Среадс.ЛокЛист говорил конкретно.
Точнее про то, что он почти никогда не нужен правильному серверу.
-
> про то, что он почти никогда не нужен правильному серверу
С этим солидарен.
-
правильный сервер... я бы вобще не назвал то что мне нужно сервером.
Вобщем ладно, спасибо вам за участие в теме, понял что помощи не будет
-
фигасе заявки. "помощи не будет".
-
> я бы вобще не назвал то что мне нужно сервером
Обзови его хоть горшком - как он был сервером, так он им и останется.
Его задача - обслуживать (to serve) клиентов, если они не в состоянии сами себя обслужить.
> помощи не будет
Тебе уже 68 постов только и делают, что помогают, а ты все не внемлешь.
-
> если бы я писал через TServerSocket я бы не задавал таких
> тупых вопросов
Глубоко в этом сомневаюсь.
Были бы другие, но не менее тупые.
-
Server.Bindings.BindingByHandle(handle : cardinal)
а это что делает?
-
вот что сложного ответить на вопрос как отправить клиенту строку зная либо хендл, либо его адрес, либо его индекс подключения?)
-
что вобще сложного в том сервере который мне нужен? та же структура что и у сервера аси, получил передал сразу вот и всё...
-
получил передал сразу вот и всё...
не сразу, а только по запросу того, кому это предназначалось.
-
Вот я клиент твоей аси.
И Сергей М. тоже клиент.
Я нажимаю кнопку и запрашиваю инфо о контакте Сергея М.
В это время он мне шлет сообщение "Превет Медвет"
Сервер его получает и тут же сразу же мне его шлет.
А я в это время отправил запрос о его профиле и жду его.
А в ответ мне вместо данных его профиля приходит "Превет Медвет".
Я (точнее твой чудо-клиент аси) при этом в полной уверенности что:
1. Получил не сообщение, а инфу о профиле Сергея М
2. Мне не пришло текстовое сообющение от Сергея М
дальше разжевывать надо?
-
ася что ли сидит и спрашивает у сервера есть ли для неё сообщения?
вобще один товарищ посоветровал не возится с таким сервером "посредником" а связать компы не имеющие выделенных адресов через VPN. Тока я еще не совсем дочитал что это такое... так что пойду читать, мб и не нужен будет такой сервер...
-
ася что ли сидит и спрашивает у сервера есть ли для неё сообщения?
Ты лучше спроси как она вообще получает сообщения ничего не запрашивая (якобы) и ничего не читая (якобы).
-
Хотя этот вопрос лишний.
Ты попробуй сначала выкрутится из ситуации, что описана у меня в [75].
Когда в ответ на запрос информации о контакте приходит не инфа о контакте, а "Превет Медвет".
-
ну а что там выкручиться, сложности никакой.
например синтаксис для собщения MSG_<сообщение>, а для инфы INFO_<инфа>, и какой тут напряг? придет себе сообщение, будет оно как сообщение, а инфу по-прежнему ждем