Я хочу перенести порт на открытое соединение с сервером в Delphi (я использую TServerSocket
).
Я использую эту процедуру, которую я нашел в другом вопросе StackOverflow:
procedure AddUPnPEntry(Port: Integer; const Name: ShortString; LAN_IP: string);
var
Nat: Variant;
Ports: Variant;
begin
if not (LAN_IP = '127.0.0.1') then
begin
Nat := CreateOleObject('HNetCfg.NATUPnP');
Ports := Nat.StaticPortMappingCollection;
if not VarIsClear(Ports) then
begin
CoInitialize(nil);
try
ShowMessage(IntToStr(Ports.count));
Ports.Add(Port,'TCP',Port,LAN_IP,True,name);
finally
CoUninitialize;
end;
end;
end;
end;
Я уже пробовал читать документацию MSDN , используя разные фрагменты кода (аналогично этому).
Я хочу понять, почему этот код не работает. Все, что я получаю, это сообщение об ошибке Access Violation.
Просто дополнительная информация:
Мой маршрутизатор поддерживает UPnP. Я использую Windows 7 и Delphi 7.