自己动手实现UPnP进行端口映射的经过
从接到任务,到实现了 UPnP 在家用路由器上进行端口映射的时间总共花费了 1个半月,下面大概讲讲从资料搜集到设计实现的经过,好给有同样需求的人一些线索(不论及具体实现和代码)。
所谓 UPnP ,就是“通用的即插即用” ,注意是通用的,虽然很容易和 Windows 的即插即用混淆,但这肯定不是微软的专利!现在大部分的路由器都支持这个功能,只是默认情况下没有打开而已(基于安全考虑)。请管理员手动打开这个支持选项。
这是用来干什么用的?如果我们要写 P2P 软件,那就用的着了,电骡不是有所谓的 LowID 和 highID 吗? 为了提高自己的共享能力(我为别人共享,别人也为我共享),我们(软件)要使用公网 IP 地址监听和建立连接,但是我们(软件)不是路由器,如何监听? 只好请路由器帮我们做一个端口映射,然后我们(软件)在内网监听,效果跟在公网上监听一样,也就是所谓 电骡的 HighID 了。 现在越来越多的用户都是内网用户的上网形式(NAT),如网吧。能够把自己的 LowID 提升为 HighID ,那么肯定会有更多的备选数据源啊,这样下载就被加速了!
不说那么多废话了,如何开始?所有资料都是在http://upnp.org/ 上,着重看 《Internet Gateway Device (IGD) V 1.0》文档就行,其他都不是我们所关注的。这些文档的打包里,实际上对我真正有用的是一个叫做 《UPnP_IGD_WANIPConnection 1.0.pdf》 的文档,其它的内容实在太多了,我偷懒都没看。不过就算