UPNP庫 miniupnpc的主要函式介紹

2021-07-02 12:20:54 字數 3287 閱讀 9570

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...