http://blog.163.com/miky_sun/blog/static/336940520105954733836/

1.miniupnpc库主要使用的头文件有

#include "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():判断一个设备是否连接正常

// 查询局域网内所有Upnp设备;按照链表的方式返回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失败UPNP_AddPortMapping(char* controlURL, servicetype, extPort, inPort, inClient, desc, proto, remoteHost);

// 删除指定设备、指定映射的端口// @controlURL : 输入IGD设备的路径// @servicetype: 输入IGD设备类型// @extPort    : 输入映射出的外网端口// @proto      : 输入该外网端口支持的类型TCP或UDP// @remoteHost : 输入该端口限制的IP地址、通常设置为NULL,表示所有IP都能访问// @result     : =0成功;非0失败UPNP_DeletePortMapping(controlURL, servicetype, extPort, proto, remoteHost);

3.对upnp常见的操作

UPNP_GetSpecificPortMappingEntry:根据指定设备和外网端口获得内网信息

UPNP_GetExternalIPAddress:根据指定设备获得外网ip地址

UPNP_GetConnectionTypeInfo:根据指定设备,获取连接类型

// 根据指定的设备、和指定外网端口和通讯类型,获得映射端口// @controlURL : 输入IGD设备的路径// @servicetype: 输入IGD设备类型// @extPort    : 输入映射出的外网端口// @proto      : 输入该外网端口支持的类型TCP或UDP// @inPort     : 输出内网port端口// @inClient   : 输出内网IP地址// @result     : =0成功;非0失败UPNP_GetSpecificPortMappingEntry(controlURL, servicetype, extPort, proto, inClient, inPort);

// 根据指定的设备,获得所有的映射端口// @controlURL : 输入IGD设备的路径// @servicetype: 输入IGD设备类型// @index      : 输出映射端口的个数// @result     : =0成功;非0失败UPNP_GetGenericPortMappingEntry(controlURL, servicetype, ....);

// 根据指定的IGD设备和路径,查询出外网IP// @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);

miniupnpc的主要函数介绍相关推荐

  1. UPNP库——miniupnpc的主要函数介绍

    1.miniupnpc库主要使用的头文件有 #include "miniwget.h"#include "miniupnpc.h"#include " ...

  2. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  3. C语言中的scanf()函数介绍

    1.scanf函数:读取从键盘输入的数据 在C语言中,有多个函数可以从键盘获得用户输入: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据 getchar().get ...

  4. 延时函数介绍和呼吸灯的实现

    文章目录 延时函数介绍 呼吸灯原理 杨桃32学习笔记,本文图片文字皆为转述 延时函数介绍 分为delay_s秒,delay_ms毫秒,delay_us微秒延时,最大参数不能超过65535. 呼吸灯原理 ...

  5. ×××S 2012 参照函数 -- 介绍

    ×××S 2012 参照函数 -- 介绍 在×××S中,一张报表内可以同时包含多个数据集,但是一个数据区域就仅限于一个数据集,如果希望同时参考多个数据集,查找函数就能轻松办到,其概念类似JOIN是通过 ...

  6. 【 MATLAB 】rem 函数介绍

    rem函数和mod函数很相似,二者认真看一个,另一个看一下区别即可. mod函数介绍:[ MATLAB ]mod 函数介绍 rem Remainder after division Syntax r ...

  7. 【 MATLAB 】filter 函数介绍 之 Filter Data in Sections

    [ MATLAB ]filter 函数介绍(一维数字滤波器) 在上篇博文中,里面有一个例子,就是过滤部分中的数据,这个部分中的数据的意思是如果有一个向量需要过滤,我们可以把它分为几段,然后分段过滤. ...

  8. swift1.2语言函数和闭包函数介绍

    swift1.2语言函数和闭包函数介绍 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护. swift1.2语言函 ...

  9. php函数介绍,PHP函数介绍_PHP教程

    PHP函数介绍 基本使用: 函数定义形式: function 函数名(形参1,形参2,...) { //函数体(代码块): } 函数调用形式: 本质上就是使用一个名字来达到执行其中函数中的的作用.通常 ...

最新文章

  1. 骁龙855在AI性能上真的秒杀麒麟980?噱头而已
  2. 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数
  3. 单词嵌入_神秘的文本分类:单词嵌入简介
  4. 山洪沟防洪治理工程技术规范_幸福沟水库一期工程完工丨尚志城市供水、防洪、农业灌溉皆升级...
  5. 2019.7.17刷题统计
  6. Struts秘籍之起式:第1.6式:管理Struts配置文件
  7. 1079 Total Sales of Supply Chain (25 分) 树的遍历:DFS+vector
  8. 我写了一份初学者的学习实践教程!
  9. 第十二周项目一----图基本算法库
  10. Fork/Join(分开/联合)
  11. mysql即是主键又是外键怎么写_数据库 既是主键又是外键
  12. Java使用阿里云视频点播
  13. 利用 Amazon IoT Greengrass 在边缘 DIY 自动浇花系统
  14. arm汇编lr pc b bl ret指令函数调用和返回gif动图演示
  15. Flutter 打开外部第三方应用
  16. 浅谈TCP半连接攻击与全连接攻击
  17. 可乐瓶游戏c语言,中班协调性体育游戏—玩可乐瓶
  18. 十七.用户注册 ---- 图形验证码 2021-04-03
  19. 动环监控系统的IO服务器,机房动环监控系统配套多路开关量IO
  20. Java学习踩坑:Elasticsearch7.X.X的JDK版本导致的问题

热门文章

  1. React google map
  2. 23种设计模式知识要点
  3. 用python和pygame写游戏_用Python和Pygame写游戏-从入门到精通(6)
  4. 《汉字英雄》第二季即将开播 步步高千万级冠名彰显营销价值
  5. 实验一 网络扫码与网络侦查
  6. coherence 介绍
  7. github 检查代码质量_07. 改善 GitHub 项目代码质量:测试
  8. [原]ubuntu下制作openstack-havana源
  9. 地理坐标系与投影坐标系简介
  10. oracle 死锁日志位置,高手请进,帮我分析一下日志(死锁)