端口映射之发送控制信息
摘要:在获得控制URL后,发送添加、删除、察看端口映射的控制信息。这里主要讨论控制信息的格式。
在这里我先把各种控制信息的格式说明一下。(下面的rn都是表示换行,我输入不了反斜杠。)
- 增加端口映射。 “AddPortMapping”
- “
rn” “ ***ExternalPort*** rn” “***Protocol*** rn” “***InternalPort*** n”
“***InternalClient*** rn”
“1 rn”
“***PortMappingDescription***” “ rn”
“***LeaseDuration*** rn”- 删除端口映射 ”DeletePortMapping”
- “
rn” “ ***ExternalPort*** rn” “***Protocol*** rn”- 获得端口映射信息 ”GetGenericPortMappingEntry”
- “
***PortMappingIndex*** ” “rn” “ rn” “ rn” “ rn” “ rn” “ 1 rn” “” “ rn” ”rn”
其中斜体部分需要在编程是填入的。ExternalPort 外部端口。InternalPort内部端口。这 两者一般就填映射的端口。Protocal 填TCP或UDP。InterClient 一般就是本地IP地址。PortMappingDescription 填写端口映射的描述,比如什么程序建立了这个端口。LeaseDuration 是映射的持续时间,用0表示不永久。PortMappingIndex 是端口映射索引,路由上第几个映射。
我们再来看下面这个XML文档结构。
“rn”
“<s:Envelope xmlns:s=”
“”http://schemas.xmlsoap.org/soap/envelope/” ”
“s:encodingStyle=”
“”http://schemas.xmlsoap.org/soap/encoding/”>rn”
“
“</s:Envelope>rn”
我们在actionName 处填入”AddPortMapping” “DeletePortMapping” “GetGenericPortMappingEntry”。serviceType 处填入设备的服务类型。”urn:schemas-upnp-org:service:WANIPConnection:1″或”urn:schemas-upnp-org:service:WANPPPConnection:1″。actionParams 填入上面的各种控制信息。
最后在前面加上HTTP头。
“POST path HTTP/1.1rn”
“HOST: host:portrn”
“SOAPACTION:”serviceType#actionName“rn”
“CONTENT-TYPE: text/xml ; charset=”utf-8″rn”
“Content-Length: contentLength rnrn”
path host port 意思很明显。contentLength面那个XML文档的长度。
然后连接到host:port,发送到整个信息即可完成控制。