免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
ONVIF協(xié)議網(wǎng)絡(luò)攝像機(jī)
 bobociel 2017.08.01 11:21* 字?jǐn)?shù) 1981 閱讀 1186評(píng)論 0喜歡 0
logo.PNG
來(lái)源:CSDN
一 使用IPC攝像頭
IPC攝像頭接入有線網(wǎng)絡(luò),PC也接入有線網(wǎng)絡(luò),保證IPC和PC在同一局域網(wǎng)。(保證ip的前三部分相同。)
下載IP Camera獲得ONVIF Device Test Tool 來(lái)搜索攝像頭信息。
在PC瀏覽器中輸入IPC的ip地址和端口,輸入賬戶名和密碼進(jìn)入網(wǎng)絡(luò)攝像機(jī)控制臺(tái)。 可以設(shè)置IPC無(wú)線連接信息,IPC錄制視頻信息等。
二 理解Web Service和ONVIF
Web Service是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得Web Service能與其他兼容的組件進(jìn)行互操作
ONVIF(Open Network Video Interface Forum,開(kāi)放型網(wǎng)絡(luò)視頻接口論壇)ONVIF規(guī)范描述了網(wǎng)絡(luò)視頻的模型、接口、數(shù)據(jù)類型以及數(shù)據(jù)交互的模式。并復(fù)用了一些現(xiàn)有的標(biāo)準(zhǔn),如WS系列標(biāo)準(zhǔn)等。ONVIF規(guī)范的目標(biāo)是實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)視頻框架協(xié)議,使不同廠商所生產(chǎn)的網(wǎng)絡(luò)視頻產(chǎn)品(包括攝錄前端、錄像設(shè)備等)完全互通。
ONVIF規(guī)范中設(shè)備管理和控制部分所定義的接口均以Web Services 的形式提供。
ONVIF規(guī)范的內(nèi)容結(jié)構(gòu):
[圖片上傳失敗...(image-c8512e-1534605862114)]
ONVIF規(guī)范的網(wǎng)絡(luò)層次結(jié)構(gòu):
ONVIF接口被劃分為不同模塊,包括:設(shè)備發(fā)現(xiàn)、設(shè)備管理、設(shè)備輸入輸出服務(wù)、圖像配置、媒體配置、實(shí)時(shí)流媒體、接收端配置、顯示服務(wù)、事件處理、PTZ控制等。
SOAP介紹
三 使用gSOAP生成Web Service框架
ONVIF標(biāo)準(zhǔn)是使用SOAP方式實(shí)現(xiàn)的Web Services,上一章介紹了Web Services,涉及到很多概念,包括SOAP,HTML,XML,RPC等很多東西。開(kāi)發(fā)時(shí)我們可以使用gSOAP自動(dòng)生成大部分代碼框架,而不需要自己造輪子。
這樣的工具有:
1, gSOAP工具,適用于C/C++語(yǔ)言開(kāi)發(fā)。
2, Apache CXF工具,適用于JAVA語(yǔ)言開(kāi)發(fā)。
1, gSOAP簡(jiǎn)介
gSOAP官網(wǎng):http://www.cs.fsu.edu/~engelen/soap.html
gSOAP源碼下載地址:http://sourceforge.net/projects/gsoap2
gSOAP編譯工具提供了一個(gè)SOAP關(guān)于C/C++語(yǔ)言的實(shí)現(xiàn),從而讓C/C++語(yǔ)言開(kāi)發(fā)Web Service服務(wù)器或客戶端程序的工作變得輕松很多。
gSOAP會(huì)生成哪些框架代碼,下圖中綠色的部分就是自動(dòng)生成的代碼。
[圖片上傳失敗...(image-5f872a-1534605862114)]
2, gSOAP工具轉(zhuǎn)換原理
gSOAP工具根據(jù)WSDL文檔,自動(dòng)生成C/C++語(yǔ)言的客戶端/服務(wù)器框架代碼。這其中有兩個(gè)重要的工具,wsdl2h和soapcpp2。wsdl2h工具根據(jù)WSDL文檔生成C/C++頭文件,而soapcpp2工具是根據(jù)該頭文件生成C/C++的框架代碼。
gSOAP工具可以在Windows、Linux和MaxOSX操作系統(tǒng)下運(yùn)行,gSOAP工具包中自帶有Windows和MaxOSX操作系統(tǒng)的wsdl2h和soapcpp2可執(zhí)行文件,而Linux操作系統(tǒng)得自己編譯。
[圖片上傳失敗...(image-8797d8-1534605862114)]
如何使用gSOAP,在gSOAP官網(wǎng),或者在工具包gsoap\doc\soapdoc2.pdf文檔中都有很詳細(xì)的說(shuō)明,大家可以參考。下面我們通過(guò)【國(guó)內(nèi)手機(jī)號(hào)碼歸屬地查詢】的例子,來(lái)演示如何使用gSOAP工具。
3, 手機(jī)號(hào)碼歸屬地查詢
國(guó)內(nèi)手機(jī)號(hào)碼歸屬地查詢 免費(fèi)WEB服務(wù):
WEB服務(wù)地址: http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx
WSDL: http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
(1) 下載gSOAP工具。
(2) 創(chuàng)建MobileCode,從gSOAP工具中拷貝如下文件到文件夾MobileCode文件夾
gsoap_2.8.45\gsoap-2.8\gsoap\bin\win32\soapcpp2.exegsoap_2.8.45\gsoap-2.8\gsoap\bin\win32\wsdl2h.exegsoap_2.8.45\gsoap-2.8\gsoap\stdsoap2.cgsoap_2.8.45\gsoap-2.8\gsoap\stdsoap2.hgsoap_2.8.45\gsoap-2.8\gsoap\typemap.datgsoap_2.8.45\gsoap-2.8\gsoap\importgsoap_2.8.45\gsoap-2.8\gsoap\custom(3) 啟動(dòng)cmd.exe,進(jìn)入MobileCode目錄。
(4) 使用wsdl2h工具,根據(jù)WSDL產(chǎn)生頭文件,在cmd中執(zhí)行以下命令:
wsdl2h.exe -o mobilecode.h -c -s -t typemap.dat http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl其中-c為產(chǎn)生純c代碼,默認(rèn)生成c++代碼;-s為不使用STL庫(kù),-t為typemap.dat的標(biāo)識(shí)。詳情可通過(guò)wsdl2h.exe -help查看幫助。這里的WSDL文件,可以在wsdl2h命令中在線下載,也可以先下載到本地,然后引用本地WSDL文件。
(5) 使用soapcpp2工具,根據(jù)頭文件產(chǎn)生框架代碼,在cmd中命令如下:
soapcpp2.exe -2 -C -c -x -Iimport -Icustom mobilecode.h-2為生成SOAP 1.2版本代碼, -C為僅生成客戶端代碼,-c為生成C語(yǔ)言代碼。詳情可使用soapcpp2.exe -help查看幫助。
(6) 自動(dòng)生成的源碼文件如下圖所示
[圖片上傳失敗...(image-6717eb-1534605862114)]
其中custom, import, wsdl2h.exe, soapcpp2.exe, typemap.dat, mobilecode.h, soapClientLib.c這些文件已經(jīng)沒(méi)用了,可以刪掉,剩下的文件有:
[圖片上傳失敗...(image-143fac-1534605862114)]
在soapStub.h文件中,列出了[國(guó)內(nèi)手機(jī)號(hào)碼歸屬地查詢] WEB服務(wù)的所有接口(Client-Side Call Stub Functions), 我們的應(yīng)用程序通過(guò)調(diào)用這些接口就成了,值域SOAP協(xié)議整個(gè)過(guò)程怎么實(shí)現(xiàn)的,都在soapC.c和soapClient.c中,有興趣的可以去研究。至少懂得調(diào)用一下接口:
[圖片上傳失敗...(image-477684-1534605862114)]
(7) 接下來(lái),寫個(gè)mian.c,通過(guò)soap_call_ns1_getMobileCodeInfo接口來(lái)查詢國(guó)內(nèi)手機(jī)號(hào)碼歸屬地信息,并將其打印出來(lái),源碼如下所示:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "soapStub.h" #include "MobileCodeWSSoap.nsmap" void getMobileCodeInfo(char *mobileCode) { struct soap *soap = NULL; const char *endpoint = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx"; struct _ns1__getMobileCodeInfo req; struct _ns1__getMobileCodeInfoResponse resp; soap = soap_new(); // allocate and initalize a context soap_set_mode(soap, SOAP_C_UTFSTRING); // support multibyte string(for Chinese) memset(&req, 0x00, sizeof(req)); req.mobileCode = mobileCode; req.userID = NULL; if(SOAP_OK == soap_call___ns1__getMobileCodeInfo(soap, endpoint, NULL, &req, &resp)) { if (NULL != resp.getMobileCodeInfoResult) { printf("%s\n", resp.getMobileCodeInfoResult); } } soap_destroy(soap); // delete deserialized objects soap_end(soap); // delete allocated data soap_free(soap); // free the soap struct context data } int main(int argc, char **argv) { if (argc < 2) { return 0; } getMobileCodeInfo(argv[1]); return 0; }執(zhí)行代碼會(huì)出現(xiàn)亂碼,這是由于WEB服務(wù)應(yīng)答的歸屬地信息中包含有UTF-8格式的中文導(dǎo)致的。SOAP協(xié)議采用HTTP傳輸協(xié)議+XML數(shù)據(jù)格式,規(guī)定XML字符編碼格式必須是UTF-8。為了解決這個(gè)問(wèn)題:
① 在源碼匯中加入soap_set_mode(soap,SOAP_C_UTFSTRING)語(yǔ)句,告知gSOAP底層代碼,我們上層傳入的字符編碼格式是UTF-8,內(nèi)部就不參與轉(zhuǎn)碼的過(guò)程,WEB服務(wù)器應(yīng)答的UTF-8字符也都直接傳給上層,此時(shí)我們的main.c代碼收到的應(yīng)答也是UTF-8格式的數(shù)據(jù)。
② md.exe環(huán)境默認(rèn)的環(huán)境是「簡(jiǎn)體中文GBK」,通過(guò)chcp命令就能查到,「活動(dòng)代碼頁(yè)936」代表的就是「簡(jiǎn)體中文GBK」,在這種環(huán)境下打印UTF-8中文字符當(dāng)然會(huì)亂碼,使用命令chcp 65001將控制臺(tái)的字符集改為UTF-8,「活動(dòng)代碼頁(yè)65001」代表的就是UTF-8,如此就不會(huì)亂碼了。
亂碼問(wèn)題,這個(gè)例子還算是簡(jiǎn)單的,僅僅是服務(wù)器應(yīng)答的時(shí)候帶有UTF-8格式的中文字符,從控制臺(tái)輸入的字符(手機(jī)號(hào)碼)是純數(shù)字的,沒(méi)有涉及到UTF-8編碼問(wèn)題。如果輸入也帶有中文,那情況會(huì)更復(fù)雜,有關(guān)這方面的詳細(xì)情況,可參考我博客中此前寫的一篇文章「淺談C/C++編程中的字符編碼轉(zhuǎn)換」。
總結(jié)
對(duì)本文做個(gè)總結(jié):
開(kāi)發(fā)基于SOAP方式的Web Services,不需要自己實(shí)現(xiàn)代碼框架,有諸如gSOAP、Apache CXF這樣的工具會(huì)幫我們實(shí)現(xiàn)。
[圖片上傳失敗...(image-2e233f-1534605862114)]
以「國(guó)內(nèi)手機(jī)號(hào)碼歸屬地查詢」為例,重點(diǎn)介紹了gSOAP工具轉(zhuǎn)換原理,及其使用方法。
還遇到了SOAP協(xié)議中UTF-8中文字符打印到控制臺(tái)會(huì)亂碼的問(wèn)題,并給出了解決方法。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
gSOAP搭建ONVIF(C++)客戶端開(kāi)發(fā)框架--windows&ubuntu
用gSOAP調(diào)用Web Services
gSOAP學(xué)習(xí)筆記
CentOS6.5下編繹gSoap相關(guān)問(wèn)題及解決
onvif學(xué)習(xí)之onvif代碼框架
Onvif備忘錄(1)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服