0

我使用 GSOAP 来实现一个完整的 ONVIF 发现功能的简单程序。(NVT,NVR部分,不是设备管理器,即客户端部分)

程序需要 1) 发送“ProbeMatch”消息以响应 ONVIF DM 的“Probe”消息。2) 偶尔发送“Hello”消息。

我下载并启动了“gsoap”工具,没有任何问题。我生成了 h 和 c 文件,并在 Eclipse 中创建了一个项目。

当我以“客户端”模式生成 C 文件时,我可以构建 Eclipse 项目。soapClient.cpp 中定义了 3 个函数,但我不知道如何在 main 函数中使用它们(ns2_HelloType 和ns2_ResolveType 参数是什么)。而且,我什么时候调用这些函数?

当我在“服务器”模式下生成 C 文件时,我无法构建 Eclipse 项目,因为这些函数在 h 文件中具有签名但未定义。我必须根据gsoap的教程来定义它们。(计算器示例)

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

实际上,我无法理解“服务器”和“客户端”的概念。ONVIF 规范的哪一部分是客户端,哪一部分是服务器?你好,再见等是“设备”本身的功能,那么设备 SOAP 服务器也是如此吗?任何人都可以澄清这些概念吗?

最好的问候, 菲拉特

4

2 回答 2

2

你想实现什么样的设备?网络视频传输器 (NVT)?在这种情况下,您需要实现服务器。

客户端是连接到设备的 VMS 的一部分。

当您生成服务器部分时,您需要实现在从 VMS 调用对应函数时执行某些操作的函数。这就是构建失败的原因。

于 2013-11-18T08:32:26.153 回答
1

你问了几个问题。这将仅解决与 gsoap、客户端/服务器有关的问题。关于您的问题:我无法理解“服务器”和“客户端”的概念,有人可以澄清这些概念吗?....所以,用最一般的术语来说:

如果您使用 gsoap,那是因为您想使用C 绑定将 Web 服务的某些组件拼接在一起,无论是在服务器端还是在客户端

一个简单的 Web 服务 Server/Client 场景:
简单来说,服务器监听来自客户端的请求,并根据请求者(即客户端)提供的一些信息,查询其数据源,通常是数据库,使用输入数据,将请求的数据打包并返回给客户端。想想从你的手机获取天气。您的手机(客户端)将一些小信息(例如邮政编码)发送到已知的 WSDL 端点。天气数据将返回并显示在您的手机应用程序上。

使用 gsoap 它看起来像这样:,从您的手机发送的请求只需输入为人类可读的文本: 98873-1234,使用 gsoap C 绑定从应用程序读入 C 数据结构。C 绑定(C 函数)使用 gsoap 库中的功能将结构数据转换为 XML SOAP 格式,并通过 tcp/ip 将 XML 数据发送到服务器的 WSDL 端点。应用程序中的服务器端 gsoap 库接收此数据,将其从 XML SOAP 格式转换为最有可能作为结构成员的 C 类型数据。然后使用该数据为数据库构建查询字符串并进行查询。查询被发送到数据库。响应 XML SOAP 再次转换为 C 类型数据,并使用 gsoap 提供的 C 绑定(C 函数)发送回请求客户端。

同样,用非常简单的术语来说,它看起来像这样:
ServerSide database<->SQL<->gsoapApp<->tcp/ip<->gsoapApp<->userInterfaceDisplay ClientSide

这里有一个客户端应用程序示例。尽管此示例针对客户端应用程序,但服务器端 gsoap 代码生成的概念非常相似。

于 2013-11-18T17:10:53.167 回答