我正在使用Port Forwarding by Using "HNetCfg.NATUPnP" Ole Object Failed中的代码进行端口转发,工作正常,但是当应用程序终止时我无法关闭端口。
AddUPnPEntry(1234, 'Hello3', '192.168.1.34');
1234端口仍然打开,即使我重新启动了我的电脑,我在canyouseeme.org上进行了测试。 那我怎么能关闭这个港口?
编辑:解决了,我只需要重新启动(关闭然后再打开)我的路由器再次关闭端口。
答案 0 :(得分:1)
AddUPnPEntry()
使用IStaticPortMappingCollection.Add()
方法。有一个关联的IStaticPortMappingCollection.Remove()
方法,例如:
Procedure RemoveUPnPEntry(Port: Integer);
Var
Nat: Variant;
Ports: Variant;
Begin
try
Nat := CreateOleObject('HNetCfg.NATUPnP');
Ports := Nat.StaticPortMappingCollection;
Ports.Remove(Port, 'TCP');
except
ShowMessage('An Error occured with removing UPnP Ports. ' +
'Please check to see if your router supports UPnP and ' +
'has it enabled or disable UPnP.');
end;
End;
RemoveUPnPEntry(1234);