# sys.upnp.nat 库模块帮助文档

## sys.upnp 成员列表 <a id="sys.upnp" href="#sys.upnp">&#x23;</a>

通用即插即用 Universal Plug and Play

### sys.upnp.nat <a id="sys.upnp.nat" href="#sys.upnp.nat">&#x23;</a>
Network Address Translation 自动端口映射

### sys.upnp.nat() <a id="sys.upnp.nat" href="#sys.upnp.nat">&#x23;</a>
创建 UPnP 自动端口映射管理器,  
如果设备不支持自动端口映射或连接到受限的访客网络则所有函数忽略不执行,  
注意在XP系统上此对象的所有函数也会忽略不执行  

[返回对象:sysUpnpNatObject](#sysUpnpNatObject)

## sysUpnpNatMappingPortObject 成员列表 <a id="sysUpnpNatMappingPortObject" href="#sysUpnpNatMappingPortObject">&#x23;</a>

### sysUpnpNatMappingPortObject.description <a id="sysUpnpNatMappingPortObject.description" href="#sysUpnpNatMappingPortObject.description">&#x23;</a>
描述

### sysUpnpNatMappingPortObject.editDescription() <a id="sysUpnpNatMappingPortObject.editDescription" href="#sysUpnpNatMappingPortObject.editDescription">&#x23;</a>
设置描述,参数应为字符串

### sysUpnpNatMappingPortObject.editInternalClient() <a id="sysUpnpNatMappingPortObject.editInternalClient" href="#sysUpnpNatMappingPortObject.editInternalClient">&#x23;</a>
设置内网IP地址或主机名,参数应为字符串

### sysUpnpNatMappingPortObject.editInternalPort() <a id="sysUpnpNatMappingPortObject.editInternalPort" href="#sysUpnpNatMappingPortObject.editInternalPort">&#x23;</a>
设置内网端口,参数应为数值

### sysUpnpNatMappingPortObject.enable() <a id="sysUpnpNatMappingPortObject.enable" href="#sysUpnpNatMappingPortObject.enable">&#x23;</a>
设置是否启用,即修改 enabled 属性的值,  
参数可为 true 或 false

### sysUpnpNatMappingPortObject.enabled <a id="sysUpnpNatMappingPortObject.enabled" href="#sysUpnpNatMappingPortObject.enabled">&#x23;</a>
是否启用  
注意这是只读属性,  
修改此属性应当调用 enable 函数

### sysUpnpNatMappingPortObject.externalIPAddress <a id="sysUpnpNatMappingPortObject.externalIPAddress" href="#sysUpnpNatMappingPortObject.externalIPAddress">&#x23;</a>
外网 IP 地址

### sysUpnpNatMappingPortObject.externalPort <a id="sysUpnpNatMappingPortObject.externalPort" href="#sysUpnpNatMappingPortObject.externalPort">&#x23;</a>
外网端口

### sysUpnpNatMappingPortObject.internalClient <a id="sysUpnpNatMappingPortObject.internalClient" href="#sysUpnpNatMappingPortObject.internalClient">&#x23;</a>
内网IP地址或主机名

### sysUpnpNatMappingPortObject.internalPort <a id="sysUpnpNatMappingPortObject.internalPort" href="#sysUpnpNatMappingPortObject.internalPort">&#x23;</a>
内网端口

### sysUpnpNatMappingPortObject.protocol <a id="sysUpnpNatMappingPortObject.protocol" href="#sysUpnpNatMappingPortObject.protocol">&#x23;</a>
网络协议

## sysUpnpNatObject 成员列表 <a id="sysUpnpNatObject" href="#sysUpnpNatObject">&#x23;</a>

### sysUpnpNatObject.add <a id="sysUpnpNatObject.add" href="#sysUpnpNatObject.add">&#x23;</a>
添加端口映射,  
成功返回端口映射对象,失败返回null,  
如果指定外网端口已映射到其他主机,则添加该端口会失败,  
如果添加之前已映射到本机的端口则会成功

### sysUpnpNatObject.add() <a id="sysUpnpNatObject.add" href="#sysUpnpNatObject.add">&#x23;</a>
[返回对象:sysUpnpNatMappingPortObject](#sysUpnpNatMappingPortObject)

### sysUpnpNatObject.add(externalPort,protocol,internalPort,internalClient,description) <a id="sysUpnpNatObject.add" href="#sysUpnpNatObject.add">&#x23;</a>
添加端口映射,  
除参数 @1 以外，所有参数都是可选参数,  
全部参数如下：  
@externalPort 外网端口,数值,  
@protocol 网络协议,默认为"TCP"  
@internalPort 内网端口,默认与外端端口相同,数值  
@internalClient 内网地址,省略则默认获取本机联网的网卡 IP 地址,字符串值  
@description 描述,默认为空字符串

### sysUpnpNatObject.close() <a id="sysUpnpNatObject.close" href="#sysUpnpNatObject.close">&#x23;</a>
关闭对象,一般可省略

### sysUpnpNatObject.count <a id="sysUpnpNatObject.count" href="#sysUpnpNatObject.count">&#x23;</a>
返回端口映射对象总数

### sysUpnpNatObject.each() <a id="sysUpnpNatObject.each" href="#sysUpnpNatObject.each">&#x23;</a>

```aardio
for index,mappingPort in sysUpnpNatObject.each() {  

}  

[返回对象:sysUpnpNatMappingPortObject](#sysUpnpNatMappingPortObject)
```

### sysUpnpNatObject.getTable() <a id="sysUpnpNatObject.getTable" href="#sysUpnpNatObject.getTable">&#x23;</a>
返回所有端口映射数据为一个数组，  
每个数组成员为包含以下字段的普通表对象：  
protocol 协议,  
description 描述,  
externalPort 外部端口,  
externalIPAddress 外网地址,  
internalPort 内网端口,  
internalClient 内网地址,  
comObject 此映射对象的 COM 对象

### sysUpnpNatObject.item() <a id="sysUpnpNatObject.item" href="#sysUpnpNatObject.item">&#x23;</a>
[返回对象:sysUpnpNatMappingPortObject](#sysUpnpNatMappingPortObject)

### sysUpnpNatObject.item(externalPort,protocol) <a id="sysUpnpNatObject.item" href="#sysUpnpNatObject.item">&#x23;</a>
获取指定的端口映射对象,  
@externalPort 用一个数值指定外网端口,  
@protocol 用一个字符串指定网络协议,省略则为"TCP"

### sysUpnpNatObject.remove(externalPort,protocol) <a id="sysUpnpNatObject.remove" href="#sysUpnpNatObject.remove">&#x23;</a>
移除指定的端口映射对象,成功返回 true,  
@externalPort 用一个数值指定外网端口,  
@protocol 用一个字符串指定网络协议,省略则为"TCP"

### sysUpnpNatObject.valid() <a id="sysUpnpNatObject.valid" href="#sysUpnpNatObject.valid">&#x23;</a>
检测当前系统以及路由器是否支持 UPnP 自动端口映射,  
注意连接到路由器设置受限的访客网络也可能不支持 UPnP
