HNetCfg.NATUPnP有多个网卡

时间:2014-09-08 02:41:00

标签: windows delphi networking

我使用以下代码查找转发端口...

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 ...如何使用此功能并将其绑定到特定卡?

提前谢谢你......

1 个答案:

答案 0 :(得分:1)

HNetCfg.NATUPnP不支持您要求的功能。您必须找到另一个uPNP实现(或编写您自己的实现),以控制套接字绑定。