Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Нужна помощь!!!   Найти похожие ветки 

 
КочегинМихаил   (2005-02-26 08:51) [0]

Я пишу 2 сетевые программы (сервер и клиент). Так вот, у меня такая
проблема. Мне нужно, чтобы программа-сервер передавала строку-команду
программе-клиенту, а та в свою очередь распознавала и выполняла
команду.
Команды типа:
1)присвоить определённое значение какой либо переменной;
2)запустить таймер;
3)выполнить какую либо функцию, заложенную в самой программе-клиенте;
и тому подобное...
Если можете мне помочь, а также посоветовать какие стандартные
компоненты Delphi нужно использовать, то прошу писать мне на e-mail.
--
С уважением, x_dragon@ok.kz


 
GanibalLector ©   (2005-02-26 13:03) [1]

Компоненты тут не при чем!Тут дело в технологии.
Имя ей COM.Советую приобрести литературу("Delphi и технология СОМ") и на неделю забыться...


 
вредитель ©   (2005-02-26 13:24) [2]

Сокеты юзай (TClientSocket / TServerSocket). Денек и разобрался (благо delphi Berkley не предполагает, хотя, впрочем, можно и на API).
А конкретно, методы ReceiveBuf & related.
А DCOM по сети - страшная весч. Мало того, что расходы накладные, так и на 95 виндовс его поддержку ставить надо! 95 снова в моде.
А GanibalLector видимо сегодня студента должника съел. Такие коры мочит....


 
GanibalLector ©   (2005-02-26 14:59) [3]

>А DCOM по сети - страшная весч
Мотивируйте! И еще,что Вы скажете про многопоточный апартамент?


 
вредитель ©   (2005-02-26 15:40) [4]

Мотивируйте!
АРГУМЕНТИРУЮ.
Все зависит от сложности и надежности создаваемого проекта. DCOM - по сути - ни что иное как удаленный вызов методов. Для этого, дабы быть в одном адресном пространстве, клиент является серверу проксем, реализуя требуемый интерфейс, а тот в свою очередь является ему стабом, происходит любовь и метод выполняется. Создание proxy/stub и маршаллинг влекут за собой некоторые накладные расходы, несколько большие, чем просто слушание того или иного порта, анализ пришедших данных и выполнение требуемых действий (по сравнению с COM не очень надежно, но работает).

И еще,что Вы скажете про многопоточный апартамент?
Геморрой это с большой буквы, ибо синхронизация. Как в прочем и создание COM сервера и возня с его регистрацией. Технология COM, однако, другого метода одновременной работы нескольких клиентов с одним сервером не предоставляет и приходится применять его. Хотя, повторюсь, все зависит от поставленных задач, и если нужен COM, то лучше применять COM+, где гемороя несколько меньше.


 
Набережных С. ©   (2005-02-26 16:11) [5]


> вредитель ©   (26.02.05 15:40) [4]
> Геморрой это с большой буквы, ибо синхронизация. Как в прочем
> и создание COM сервера и возня с его регистрацией. Технология
> COM, однако, другого метода одновременной работы нескольких
> клиентов с одним сервером не предоставляет и приходится
> применять его. Хотя, повторюсь, все зависит от поставленных
> задач, и если нужен COM, то лучше применять COM+, где гемороя
> несколько меньше.

Судя по посту, Вы имеете весьма смутные представления о COM. И особенно, об уровне ее поддержки в Delphi.
А при работе через сокеты не надо синхронизировать? А данные маршалировать не надо? Вручную. А межплатформенная совместимость? А аутентификация? А межверсионная совместимость?
А позвольте полюбопытствовать, в чем именно меньше геморроя в COM+?
Ну, и тут этот MS идиотскую технологию придумал. И чего она так популярна?
Скучно:(


 
вредитель ©   (2005-02-26 16:26) [6]

О COM в Дельфи имею действительно смутные представления. Хотя имею некоторый опыт реализации и того и другого (C++/ATL), опыт этот не черезчур велик, поэтому могу конечно ошибаться.
Хотя я уже написал, что все зависит от сложности поставленных задач, и на мой взгляд, для простенькой программки, мониторящей состояние клиентов или даже клиента, создание COM сервера (если в Delphi это просто, снимаю шляпу) - это черезчур.


 
Набережных С. ©   (2005-02-26 16:42) [7]


> вредитель ©   (26.02.05 16:26) [6]

В вопросе речь шла о вызове методов, а не простеньком мониторе. Там, где протокол прост, я тоже считаю СОМ слишком тяжеловесной.


 
GanibalLector ©   (2005-02-26 16:50) [8]

>Сокеты юзай (TClientSocket / TServerSocket)
Я прошу прощения,но что-то в палитре не нашел.У меня Д5.И,повторюсь,как на счет многопоточного апартамента?Можно ли используя сабж(TClientSocket / TServerSocket) получить его?


 
DiamondShark ©   (2005-02-26 17:00) [9]


> И,повторюсь,как на счет многопоточного апартамента?Можно
> ли используя сабж(TClientSocket / TServerSocket) получить
> его?

Этакакэта?


 
вредитель ©   (2005-02-26 17:02) [10]

unit ScktComp

See help
TServerSocketThread


 
Набережных С. ©   (2005-02-26 17:12) [11]


> GanibalLector ©   (26.02.05 16:50) [8]

Апартамент - фишка COM. Зачем он нужен? Он позволяет объекту указать своему клиенту, способен ли объек сам обеспечить безопасность вызова своих методов одновременно из разных потоков, или все вызовы должны быть выстроены в очередь. Если сервер ЕХЕ, то все внешние вызовы - межапартаментные. Внутри, в принципе, ты можешь наплевать на эти требования и вызывать методы объектов из разных потоков напрямую, но это уже твоя ответственность - ведь автор-то ты. Так-же и при использовании сокетов. Только ты знаешь, можно ли напрямую вызывать методы объекта, работающего в одном потоке, из другого потока. Или все-таки требуется синхронизация с кодом вызываемого потока.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.074 c
3-1108643663
viola
2005-02-17 15:34
2005.03.20
Экспорт данных


1-1110107264
ShimON
2005-03-06 14:07
2005.03.20
Можно ли использовать TWebBrowser в потоке


1-1110025832
Володя
2005-03-05 15:30
2005.03.20
ошибка


1-1109948969
Denya
2005-03-04 18:09
2005.03.20
TWebBrowser


1-1109952072
webpauk
2005-03-04 19:01
2005.03.20
Указатели





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский