我使用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服务器也是如此?任何人都可以澄清这些概念吗?
最诚挚的问候, 的Firat
答案 0 :(得分:2)
您尝试使用哪种设备?网络视频发射器(NVT)?在这种情况下,您需要实现服务器。
客户端是连接到设备的VMS的一部分。
生成服务器部件时,需要实现在从VMS调用相应函数时执行某些操作的函数。这就是构建失败的原因。
答案 1 :(得分:1)
您问过几个问题 。这将仅涉及有关gsoap,客户端/服务器的那些。关于你的问题:我无法理解“服务器”和“客户端”的概念, 任何人都可以澄清这些概念吗? .. ..所以,用最一般的术语来说:
如果您使用的是gsoap,那是因为您希望使用 C绑定将服务器端上的某个Web服务组件拼接在一起,或者客户端。
一个简单的Web服务服务器/客户端方案:
简单来说,服务器侦听来自客户端的请求,并根据来自请求者(即客户端)的一些提供的信息,使用输入数据查询其数据源(通常是数据库),打包请求的数据和将其返回给客户端。想想通过手机获取天气。您的手机(客户端)会将一些小信息(如邮政编码)发送到已知的WSDL端点。天气数据将返回并显示在您的手机应用中。
使用gsoap看起来像这样: ,您手机发送的请求只需输入人类可读的文字: 98873-1234 ,从使用gsoap C绑定到C数据结构的应用程序读入。 C绑定(C函数)使用gsoap库中的功能将struct数据转换为XML SOAP格式,并通过tcp / ip将XML数据发送到服务器的WSDL端点。应用程序中的服务器端gsoap库接收此数据,将其从XML SOAP格式转换为最有可能作为结构成员的C类型数据。然后,数据用于构建数据库的查询字符串并进行查询。查询将发送到数据库。响应XML SOAP再次转换为C类型数据,并使用gsoap提供的C绑定(C函数)发送回请求客户端。
再次,用非常简单的术语 ,它看起来像这样:
ServerSide 数据库< - > SQL< - > gsoapApp< - > tcp / ip< - > gsoapApp< - > userInterfaceDisplay ClientSide
有一个客户端应用程序示例 here 。虽然此示例针对客户端应用程序,但 server 端gsoap代码生成的概念非常相似。