ethereum_cpp项目结构_p2p
差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
ethereum_cpp项目结构_p2p [2017/09/27 07:51] – 创建 螃蟹 | ethereum_cpp项目结构_p2p [2018/01/09 03:13] (当前版本) – 螃蟹 | ||
---|---|---|---|
行 3: | 行 3: | ||
=====概念===== | =====概念===== | ||
* UPnP miniupnpc | * UPnP miniupnpc | ||
- | * | + | * [[以太坊p2p节点发现算法|以太坊p2p节点发现算法]] |
+ | |||
+ | |||
+ | ====miniupnpc==== | ||
+ | |||
+ | 开源的UPnP实现库,官网如下:http:// | ||
+ | |||
+ | ===miniupnpc库主要使用的头文件有=== | ||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | |||
+ | ====miniupnpc.h使用的函数有==== | ||
+ | <code cpp> | ||
+ | // 查询局域网内所有Upnp设备;按照链表的方式返回 | ||
+ | UPNPDev* upnpDiscover() | ||
+ | |||
+ | // 释放upnp设备链表 | ||
+ | freeUPNPDevlist(UPNPDev*) | ||
+ | |||
+ | // 从upnp设备表中查询有效地设备; | ||
+ | // @UPNPDev | ||
+ | // @UPNPUrls : 如果返回值非0,UPNPUrls作为传出参数 | ||
+ | // @IGDdatas : 如果返回值非0,IGDdatas作为传出参数 | ||
+ | // @result | ||
+ | UPNP_GetValidIGD(UPNPDev*, | ||
+ | |||
+ | // Used when skipping the discovery process. | ||
+ | UPNP_GetIGDFromUrl() | ||
+ | GetUPNPUrls() | ||
+ | |||
+ | |||
+ | // 判断url是否相连接 | ||
+ | // @struct UPNPUrls: 指定的设备 | ||
+ | // @struct IGDdatas: 设备的其他信息 | ||
+ | // @result | ||
+ | UPNPIGD_IsConnected(UPNPUrls*, | ||
+ | |||
+ | |||
+ | // 释放url资源 | ||
+ | FreeUPNPUrls(UPNPUrls*); | ||
+ | |||
+ | // 封装了recv函数 | ||
+ | ReceiveData() | ||
+ | |||
+ | // 将内外IP, | ||
+ | // @controlURL : IGD设备的路径 | ||
+ | // @servicetype: | ||
+ | // @extPort | ||
+ | // @inPort | ||
+ | // @inClient | ||
+ | // @desc : 描述信息;通常设置为NULL | ||
+ | // @proto | ||
+ | // @remoteHost : 该端口限制的IP地址、通常设置为NULL,表示所有IP都能访问 | ||
+ | // @result | ||
+ | UPNP_AddPortMapping(char* controlURL, servicetype, | ||
+ | |||
+ | |||
+ | // 删除指定设备、指定映射的端口 | ||
+ | // @controlURL : 输入IGD设备的路径 | ||
+ | // @servicetype: | ||
+ | // @extPort | ||
+ | // @proto | ||
+ | // @remoteHost : 输入该端口限制的IP地址、通常设置为NULL,表示所有IP都能访问 | ||
+ | // @result | ||
+ | UPNP_DeletePortMapping(controlURL, | ||
+ | |||
+ | </ | ||
+ | ====对upnp常见的操作==== | ||
+ | // 根据指定的设备、和指定外网端口和通讯类型,获得映射端口 | ||
+ | // @controlURL : 输入IGD设备的路径 | ||
+ | // @servicetype: | ||
+ | // @extPort | ||
+ | // @proto | ||
+ | // @inPort | ||
+ | // @inClient | ||
+ | // @result | ||
+ | UPNP_GetSpecificPortMappingEntry(controlURL, | ||
+ | |||
+ | |||
+ | // 根据指定的设备,获得所有的映射端口 | ||
+ | // @controlURL : 输入IGD设备的路径 | ||
+ | // @servicetype: | ||
+ | // @index | ||
+ | // @result | ||
+ | UPNP_GetGenericPortMappingEntry(controlURL, | ||
+ | |||
+ | |||
+ | // 根据指定的IGD设备和路径,查询出外网IP | ||
+ | // @controlURL : 输入IGD设备的路径 | ||
+ | // @servicetype: | ||
+ | // @expIp | ||
+ | // @result | ||
+ | UPNP_GetExternalIPAddress(controlURL, | ||
+ | |||
+ | // 获得指定设备的状态 | ||
+ | // @controlURL : 输入IGD设备的路径 | ||
+ | // @servicetype: | ||
+ | // @status | ||
+ | // @uptime | ||
+ | // @lastconnerr: | ||
+ | // @result | ||
+ | UPNP_GetStatusInfo(controlURL, | ||
+ | |||
+ | |||
+ | // 根据指定设备,获取连接类型 | ||
+ | // @controlURL : 输入IGD设备的路径 | ||
+ | // @servicetype: | ||
+ | // @connectType: | ||
+ | // @result | ||
+ | UPNP_GetConnectionTypeInfo(controlURL, | ||
+ | |||
+ | |||
+ | // 获得接收和发送的数据包总数、和字节总数 | ||
+ | // @controlURL : 输入IGD设备的路径 | ||
+ | // @servicetype: | ||
+ | UPNP_GetTotalBytesSent(controlURL, | ||
+ | UPNP_GetTotalBytesReceived(controlURL, | ||
+ | UPNP_GetTotalPacketsSent(controlURL, | ||
+ | UPNP_GetTotalPacketsReceived(controlURL, | ||
+ | |||
+ |
ethereum_cpp项目结构_p2p.1506498662.txt.gz · 最后更改: 2017/09/27 07:51 由 螃蟹