我使用以下代码查找转发端口...
Nat := CreateOleObject('HNetCfg.NATUPnP');
Ports := Nat.StaticPortMappingCollection;
if not VarIsClear ( Ports ) then
begin
Enum := Ports._NewEnum;
foreach := enum as IEnumVariant;
while foreach.Next(1, Port, PDWORD(0)^) = 0 do
begin
Desc := Port.Description; //str
Enabled := Port.Enabled; //bool
ExtIP := Port.ExternalIPAddress;//str
ExtPort := Port.ExternalPort; //int
IntClient := Port.InternalClient; //str
IntPort := Port.InternalPort; //int
Protocol := Port.Protocol; //str
temp := Desc + #9;
if enabled then
temp := temp + 'True' + #9
else
temp := temp + 'False' + #9;
temp := temp + ExtIP + #9 + IntToStr(ExtPort) + #9 +
IntClient + #9 + IntToStr(intPort) + #9 + Protocol + #13;
end;
end;
当我在我的开发机器上运行它一切顺利...我看到路由器上的数据...但是,我的开发机器只有一个网卡...我已经确定在生产机器(其中有4个适配器...... 2个物理和2个虚拟)StaticPortMappingCollection始终为null ...如何使用此功能并将其绑定到特定卡?
提前谢谢你......
答案 0 :(得分:1)
HNetCfg.NATUPnP
不支持您要求的功能。您必须找到另一个uPNP实现(或编写您自己的实现),以控制套接字绑定。