1.miniupnpc庫主要使用的標頭檔案有
"miniwget.h"
#include
"miniupnpc.h"
#include
"upnpcommands.h"
#include
"upnperrors.h"
它使用的lib庫是miniupnpc.lib
2.miniupnpc.h使用的函式有
upnpdiscover():主要用來搜尋區域網中所有的upnp裝置(注意使用freeupnpdevlist()釋放資源)
upnp_getvalidigd():在upnp列表中檢視有效igd裝置
upnpigd_isconnected():判斷乙個裝置是否連線正常
upnpdev* upnpdiscover()
// 釋放upnp裝置鍊錶
freeupnpdevlist(upnpdev*)
// 從upnp裝置表中查詢有效地裝置;
// @upnpdev : 裝置列表
// @upnpurls : 如果返回值非0,upnpurls作為傳出引數
// @igddatas : 如果返回值非0,igddatas作為傳出引數
// @result : =0沒有igd裝置;=1有乙個連線;=2有裝置但沒有連線;=3有upnp但不是icg裝置
upnp_getvalidigd(upnpdev*, upnpurls*, igddatas*, ..)
// used when skipping the discovery process.
upnp_getigdfromurl()
getupnpurls()
// 判斷url是否相連線
// @struct upnpurls: 指定的裝置
// @struct igddatas: 裝置的其他資訊
// @result : =1連線正常;=0沒有連線
upnpigd_isconnected(upnpurls*, igddatas);
// 釋放url資源
freeupnpurls(upnpurls*);
// 封裝了recv函式
receivedata()
// 將內外ip,port在路由器上做乙個對映
// @controlurl : igd裝置的路徑
// @servicetype: igd裝置型別
// @extport : 對映出的外網埠
// @inport : 內網port埠
// @inclient : 內網ip位址
// @desc : 描述資訊;通常設定為null
// @proto : 該外網埠支援的型別tcp或udp
// @remotehost : 該埠限制的ip位址、通常設定為null,表示所有ip都能訪問
// @result : =0對映成功;非0失敗
// @controlurl : 輸入igd裝置的路徑
// @servicetype: 輸入igd裝置型別
// @extport : 輸入對映出的外網埠
// @proto : 輸入該外網埠支援的型別tcp或udp
// @remotehost : 輸入該埠限制的ip位址、通常設定為null,表示所有ip都能訪問
// @result : =0成功;非0失敗
3.對upnp常見的操作
upnp_getexternalipaddress:根據指定裝置獲得外網ip位址
upnp_getconnectiontypeinfo:根據指定裝置,獲取連線型別
// @controlurl : 輸入igd裝置的路徑
// @servicetype: 輸入igd裝置型別
// @extport : 輸入對映出的外網埠
// @proto : 輸入該外網埠支援的型別tcp或udp
// @inport : 輸出內網port埠
// @inclient : 輸出內網ip位址
// @result : =0成功;非0失敗
// @controlurl : 輸入igd裝置的路徑
// @servicetype: 輸入igd裝置型別
// @index : 輸出對映埠的個數
// @result : =0成功;非0失敗
// @controlurl : 輸入igd裝置的路徑
// @servicetype: 輸入igd裝置型別
// @expip : 輸出外網ip位址
// @result : =0成功;非0失敗
upnp_getexternalipaddress(controlurl, servicetype, extip);
// 獲得指定裝置的狀態
// @controlurl : 輸入igd裝置的路徑
// @servicetype: 輸入igd裝置型別
// @status : 輸出狀態資訊
// @uptime :
// @lastconnerr: 輸出錯誤**
// @result : =0成功;非0失敗
upnp_getstatusinfo(controlurl, servicetype, status, uptime, lastconnerror);
// 根據指定裝置,獲取連線型別
// @controlurl : 輸入igd裝置的路徑
// @servicetype: 輸入igd裝置型別
// @connecttype: 輸出igd裝置的連線型別
// @result : =0成功;非0失敗
upnp_getconnectiontypeinfo(controlurl, servicetype, connectiontype);
// 獲得接收和傳送的資料報總數、和位元組總數
// @controlurl : 輸入igd裝置的路徑
// @servicetype: 輸入igd裝置型別
upnp_gettotalbytessent(controlurl, servicetype);
upnp_gettotalbytesreceived(controlurl, servicetype);
upnp_gettotalpacketssent(controlurl, servicetype);
upnp_gettotalpacketsreceived(controlurl, servicetype);
WebServer 基於UPnP的HTTP服務
基於upnp的webserver服務 1.upnp簡介 upnp universal plug and play 即插即用協議,是基於tcp ip和裝置間通訊定製的internet協議。提供了ssdp service discovery protocol soap object access pro...
UPNP的工作流程
1.定址。dhcp 或autoip 2.發現.當裝置接入網路,裝置向網路上的cp通知自己的服務,同樣,如果cp被新增到網路上,cp會搜尋網路上的可用裝置。要注意裝置資訊和服務資訊都是要組播出去的。ssdp service discovery protocol,簡單服務發現協議 說明裝置是怎樣向網路通...
UPnP的相關資料 整理
upnp universal plag and play,通用即插即用 urn uniform resource name,統一資源名稱,用於定位服務,與位址無關 url universal resource location,統一資源定位符,一般是乙個鏈結形式,如 uri uniform reso...