【问题标题】:In GSOAP, what is the difference between client and server mode?在 GSOAP 中,客户端模式和服务器模式有什么区别?
【发布时间】:2013-11-19 01:25:30
【问题描述】:

我使用 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 服务器也是如此吗?谁能澄清这些概念?

最好的问候, 费拉特

【问题讨论】:

  • 有一个tutorial here。打开 zip,并阅读 docs 目录中包含的文档。此示例使用的开发环境可能与您可能使用的不同,但它提供了逐步如何为客户端构建 gsoap 文件的方法。 (顺便说一句,这是你需要的)。
  • 他需要一个服务器,他正在实现 NVT 而不是客户端。
  • @OttavioCampana - 我明白这一点。这些概念类似于为客户端和服务器应用程序创建 C 绑定。他提出的问题是澄清围绕服务器/客户端的概念。

标签: gsoap onvif


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    一个简单的 Web 服务服务器/客户端场景:
    简而言之,服务器监听来自客户端的请求,并根据请求者(即客户端)提供的一些信息,使用输入数据查询其数据源(通常是数据库),将请求的数据打包并将其返回给客户端。想想从你的手机获取天气。您的手机(客户端)将一些小信息(例如邮政编码)发送到已知的 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数据库 SQLgsoapApptcp/ipgsoapAppuserInterfaceDisplay ClientSide

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

    【讨论】:

    • 客户端和服务器基于 gsoap 的应用程序有很大的不同:客户端应用程序具有与设备交互所需的所有例程,但服务器文件并不完整:处理接收到的命令的函数需要由用户定义和编写。这就是他无法编译的原因。
    猜你喜欢
    • 2019-09-15
    • 2017-09-28
    相关资源
    最近更新 更多