Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > Передача данных из клиентов к серверу


Автор: Dogevec 25.7.2009, 18:32
Доброго времени суток. Подскажите пожалуйста в таком вопросе. Мне нужно передавать данные от N количества клиентов одному серверу, с учётом, что и клиенты, и сервер запускаются на одной машине. Каким образом я могу это реализовать с использованием com?

Автор: jonie 25.7.2009, 21:12
Если у вас один сервер COM (синглетон) должен быть, то вам придется сделать OutOfProcess Server (EXE файл в общем), т.к. только в нем можно сделать синглетон, либо использовать нечто вроде COM+ и его dllhost.exe как хост-процесс (наверно).

ну а в нем сделайте функцию:
Код

[id(1), helpstring("method DoJob")] HRESULT DoJob([IN]BSTR job);

например.. и используйте ее (если у вас данные есть обычный текст).

собственно в чем проблема?

Автор: Dogevec 25.7.2009, 21:32
Просто необходимо реализовать данную задачу, а в технологии com пока плохо очень разбираюсь, а времени не так много. Просьба указать какие-нибудь конкретные ссылки на материал, который будет именно по этой теме, так как просто о com много чего нашёл, а по данной конкретике пока что ничего, за сим суда и обратился

Автор: jonie 26.7.2009, 10:37
что-то мне подсказывает что вы путаете понятия "сервер" и "сервер COM". Вы различаете эти понятия ?

Автор: Dogevec 26.7.2009, 15:10
Ну, судя из прочитанной литературы могу процитировать следующее:
Цитата

Модель COM предоставляет возможность создания многократно используемых компонентов, независимых от языка программирования. Такие компоненты называются COM-серверами и представляют собой исполнимые файлы (EXE) или динамические библиотеки (DLL), специальным образом оформленные для обеспечения возможности их универсального вызова из любой программы, написанной на поддерживающем COM языке программирования.


А в моей задаче под сервером я подразумевал программу, принимающую данные, под клиентом - отправляющую данные. Просто на уровне моих знаний, связь таким образом можно реализовать только через сокет. Мне же поставлена задача реализовать данное взаимодействие( n клиентов и один сервер ) при помощи технологии com( то есть каким-то образом без сокетов ). Вот и ищу, где именно по данной тематике( обмен данными ) можно нарыть материал, так как пока ничего похоже вообще не нашёл. Либо кто-нибудь смог наглядно пояснить, как это реализовать. Если есть возможность помочь, буду благодарен безмерно!)

Автор: xvr 27.7.2009, 12:40
Все просто - делаете COM сервер в виде exe файла. Точка подключения клиента будет описываться интерфейсом (и классом) в .idl файле (сервера). Ваш COM сервер будет создавать по одному объекту на каждого подключенного клиента. Дальше эти объекты должны передавать данные в общий пул, расположенный в exe. Для реализации лучше использовать ATL

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)