В чем разница между режимом клиента и сервера в GSOAP?

Я использую GSOAP для реализации простой программы, которая выполняет функции обнаружения ONVIF. (часть NVT, NVR, а не Диспетчер устройств, т.е. клиентская часть)

Программа должна: 1) Отправлять сообщения «ProbeMatch» в ответ на сообщения «Probe» ONVIF DM. 2) Время от времени отправляйте сообщения «Привет».

Я скачал и запустил инструмент "gsoap" без проблем. Я сгенерировал файлы h и c и создал проект в Eclipse.

Когда я генерирую файлы C в режиме «Клиент», я могу собрать проект Eclipse. В soapClient.cpp определены 3 функции, но я не знаю, как их использовать в основной функции (какие параметры ns2_HelloType и ns2_ResolveType). И когда я вызываю эти функции?

Когда я генерирую файлы C в режиме «Сервер», я не могу собрать проект Eclipse, потому что эти функции имеют подписи в h-файлах, но не определены. Я должен определить их в соответствии с руководством по gsoap. (Пример калькулятора)

http://www.cs.fsu.edu/~engelen/soapdoc2.html

Собственно, я так и не смог разобраться в понятиях "Сервер" и "Клиент". Какая часть спецификации ONVIF является клиентской, а какая серверной? Привет, пока и т. д. - это функции самого «устройства», так что сервер SOAP устройства? Кто-нибудь может прояснить эти понятия?

С уважением, Фират.


person fercis    schedule 01.11.2013    source источник
comment
здесь< /б>. Откройте zip и прочитайте документы, включенные в каталог docs. В этом примере используется среда разработки, отличная от используемой вами, но в нем показано пошаговое как создать файлы gsoap для клиента. (кстати, это то, что вам нужно).   -  person ryyker    schedule 18.11.2013
comment
ему нужен сервер, он внедряет NVT, а не клиент.   -  person Ottavio Campana    schedule 18.11.2013
comment
@OtavioCampana - я это понимаю. Концепции аналогичны созданию привязок C как для клиентских, так и для серверных приложений. Вопрос, который он задает, заключается в том, чтобы прояснить концепции, связанные с сервером/клиентом.   -  person ryyker    schedule 18.11.2013


Ответы (2)


Вы задали несколько вопросов. Это касается только тех, которые касаются gsoap, клиент/сервер. Относительно вашего вопроса: Мне не удалось понять понятия "Сервер" и "Клиент" , Кто-нибудь может разъяснить эти понятия?.. .. Итак, в самых общих чертах:

Если вы используете gsoap, это потому, что вы хотите использовать привязки C для объединения некоторых компонентов веб-службы либо на серверной стороне, либо на клиентская сторона.

Простой сценарий веб-службы сервер/клиент.
Сервер, говоря упрощенно, прослушивает запрос от клиента и на основе некоторой информации, предоставленной запрашивающей стороной. (т.е. клиент), запрашивает свой источник данных, обычно базу данных, используя входные данные, упаковывает запрошенные данные и возвращает их клиенту. Подумайте о получении погоды с вашего телефона. Ваш телефон, клиент, отправляет небольшой фрагмент информации, такой как почтовый индекс, в известную конечную точку WSDL. Данные о погоде возвращаются и отображаются в приложении вашего телефона.

При использовании gsoap это будет выглядеть так: Запрос, отправленный с вашего телефона, просто вводится в виде удобочитаемого текста: 98873-1234, читайте в из приложения, использующего привязки gsoap C, в структуру данных C. Привязка C (функция C) преобразует данные структуры в формат XML SOAP, используя функции библиотек gsoap, и отправляет данные XML через tcp/ip в конечную точку WSDL сервера. Библиотеки gsoap на стороне сервера в приложении получают эти данные, преобразуют их из формата XML SOAP в данные типа C, скорее всего, как член структуры. Затем данные используются для построения строки запроса к базе данных и выполнения запроса. Запрос отправляется в базу данных. Ответ, XML SOAP, снова преобразуется в данные типа C и с помощью привязок C (функций C), предоставляемых gsoap, отправляется обратно запрашивающему клиенту.

Опять же, очень простыми словами это выглядит так:
ServerSide database‹->SQL‹- >gsoapApp‹->tcp/ip‹->gsoapApp‹->userInterfaceDisplay ClientSide

Пример клиентского приложения здесь. Хотя этот пример предназначен для клиентских приложений, концепция генерации кода gsoap на стороне сервера очень похожа.

person ryyker    schedule 18.11.2013
comment
клиентские и серверные приложения на основе gsoap имеют большую разницу: клиентские приложения имеют все необходимые процедуры для взаимодействия с устройствами, но серверные файлы не полны: функции, обрабатывающие полученные команды, должны быть определены и написаны пользователем. Вот почему он не может скомпилировать. - person Ottavio Campana; 19.11.2013

Какое устройство вы пытаетесь внедрить? Сетевой видеопередатчик (NVT)? В этом случае вам нужно реализовать сервер.

Клиент — это часть VMS, которая подключается к устройствам.

Когда вы генерируете серверную часть, вам нужно реализовать функции, которые что-то делают, когда соответствующая функция вызывается из VMS. Вот почему вы получаете ошибку сборки.

person Ottavio Campana    schedule 18.11.2013