Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Obtener la ip de la red o de mi proveedor (https://www.clubdelphi.com/foros/showthread.php?t=82786)

pedrolazarus 13-04-2013 18:55:28

Obtener la ip de la red o de mi proveedor
 
He estado tratando de obtener la ip que me provee el servicio de internet para hacer algunas restricciones pero simplemente no he podido, si alguien me puede dar una ayuda o por lo menos me hace ver un rayo de luz:) se agradece^\||/.

MAXIUM 13-04-2013 20:27:33

El se refiere la IP pública como esa que te arroja en páginas web como show-ip por ejemplo.

AzidRain 13-04-2013 21:36:44

Esta función devuelve el dato que requieres:
Código Delphi [-]
function IP_Publica: string;

  function EsNumerico( S: string ): Boolean;
  begin
    Result := false;
    if ( Length( S ) > 0 ) then
      case S[1] of
        '0'..'9': Result := True;
      end;
  end;
var
  HTMLBody: string;
  i: Integer;
  IdHTTP: TIdHTTP;
begin
  Result := '';

  // ¿Estamos conectados a Internet?
  if WinInet.InternetGetConnectedState( nil, 0 ) then
  begin
    IdHTTP := TIdHTTP.Create( Application );

    try
      HTMLBody := IdHTTP.Get( 'http://checkip.dyndns.org/' );

      for i := 0 to Length( HTMLBody ) - 1 do
      begin
        if EsNumerico( HTMLBody[i] ) or ( HTMLBody[i] = '.' ) then
          Result := Result + HTMLBody[i];
      end;

     finally
       IdHTTP.Free;
     end;
  end;
end;

Hay otras formas de obtenerla pero son mas complejas, para algo rápido esta funciona (hasta que dyndns cancele el servicio jejeje).

AzidRain 13-04-2013 21:37:55

Por cierto esa función también sirve de ejemplo de como leer una página html cualquiera y extraer el texto para analizarlo.

pedrolazarus 13-04-2013 22:20:48

Si, habia visto una parecida pero solo para linux donde utilizan una página web para obtener la ip y rezar para que no cierren la pagina :D, lo ideal seria crear una dll que se actualize con una nueva url en el caso de que sea eliminada la pagina(es mi opinion).

Gracias por el codigo, voy a probarlo

Casimiro Notevi 13-04-2013 22:37:36

Con linux se puede hacer con un comando por consola:

lynx -dump http://checkip.dyndns.org/ | grep IP | awk {'print $4'}

AzidRain 14-04-2013 01:37:58

Casimiro, al final seguimos dependiendo de http://checkip.dyndns.org/. Al final creo que desgraciadamente siempre dependeremos de una segunda conexión que nos responda desde que ip no es estamos comunicando. Si es para algún trabajo con bases de datos, al menos MySQL si sabe desde donde que ip se conecta cada usuario solo faltaría guardar el dato o hacer lo que requieras con la misma...

Casimiro Notevi 14-04-2013 02:02:49

El caso es que debe de poderse consultando el router, porque en él está la IP pública. El mio, al menos, lo muestra.
Desde linux también se puede ejecutar:
Código:

curl config.me
No tengo ni idea de cómo funciona, pero devuelve la IP correctamente.


La franja horaria es GMT +2. Ahora son las 08:56:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi