带有多个网卡的HNetCfg.NATUPnP

我正在使用下面的代码来查找转发的端口…

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始终为空…如何使用此function并将其绑定到特定的卡?

先谢谢你…

HNetCfg.NATUPnP不支持您要求的功能。 你将不得不寻找另一个uPNP实现(或者自己写)来控制套接字绑定。