Как преобразовать длинный IP адрес в короткий адрес / порт ?

Некоторые старые internet протоколы ( такие как FTP ) посылают IP адреса и номера портов в шестизначном формате XXX.XXX.XXX.XXX.XX.XXX Следующий код позволяет преобразовать такой адрес к нормальному четырёхзначному IP адресу.

procedure LongIPToShort(aLongIPAddress: string; out ShortIPAddress: string; out PortNumber: Integer);

var I, DotPos, tempPort: Integer;

var tempAddy, temp: string;

var TempStr: string;

begin

 tempAddy := '';

 tempStr := '';

// Определяем, какой символ использует отправитель в качестве разделителя длинного IP: , или .

 if (POS(',', aLongIPAddress) <> 0) then

  TempStr := ','

 else

  TempStr := '.';

 for I := 1 to 4 do

  begin

  DotPOS := POS(TempStr, aLongIPAddress);

  tempAddy := tempAddy + (Copy(aLongIPAddress, 1, (DotPos - 1)));

  if I <> 4 then TempADdy := TempAddy + '.';

  Delete(aLongIpAddress, 1, DotPos);

  end;

 DotPos := Pos(TempStr, aLongIpAddress);

 temp := Copy(aLongIpAddress, 1, (DotPos - 1));

 tempPort := (StrToInt(temp) * 256);

 Delete(aLongIpAddress, 1, DotPos);

 TempPort := tempPort + StrToInt(ALongIpAddress);

 ShortIPAddress := TempADdy;

 PortNumber := tempPort;

end;

Взято из http://forum.sources.ru

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...