Vamos con un poco de código:
Código Delphi
[-]
uses Winsock;
function Validar(Str: string): Boolean;
var
i: integer;
ip: string;
begin
Result:= FALSE;
if Pos(':',Str) > 0 then
begin
ip:= Copy(Str,1,Pos(':',Str)-1);
Delete(Str,1,Pos(':',Str));
Result:= (inet_addr(PChar(ip)) <> INADDR_NONE) and
TryStrToInt(Str,i) and (i<65535) and (i>0);
end;
end;
La función anterior separa en dos partes la cadena, la ip por un lado y el puerto por el otro. Luego intenta convertir la ip y el puerto a sus correspondientes valores binarios, si no puede quiere decir que no son validos.
Un ejemplo de como funciona:
Código Delphi
[-]
Validar('210.114.174.96:4480'); Validar('0xd2.0x72.0xae.0x60:4480'); Validar('210.0x72.174.96:4480');
Validar('210.300.174.96:4480'); Validar('210.hola.174.96:4480'); Validar('210.114.174.96:1000000');