15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту




Как преобразовать длинный 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;