Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-09-2006
Assolon Assolon is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
Assolon Va por buen camino
Conocer ip publica del router

hola,

estoy aburrido de buscar información de como saber la ip publica de mi router desde delphi pero todo lo que consigo es en php, ¿alguien sabe o tiene la solución de esto?

Gracias.
Responder Con Cita
  #2  
Antiguo 21-09-2006
cecam cecam is offline
Miembro
 
Registrado: may 2006
Ubicación: Girona
Posts: 47
Poder: 0
cecam Va por buen camino
A ver si te sirve esto . . .

Código Delphi [-]
function IP_Publica:string;
  function IsNumeric( T:string ):boolean;
  begin
    Result:=false;
    if (length(T)>0) then
      case T[1] of
          '0'..'9':Result:=true;
      end;
  end;
var
  HTMLBody:string;
  i:integer;
  IdHTTP:TIdHTTP;
begin
  Result:='';
  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   IsNumeric(HTMLBody[i])
             or  (HTMLBody[i]='.')
             then Result:=Result+HTMLBody[i];
         end;
       finally
         IdHTTP.Free;
       end;
  end;
end;

Saludos!
Responder Con Cita
  #3  
Antiguo 21-09-2006
Assolon Assolon is offline
Registrado
 
Registrado: abr 2006
Posts: 7
Poder: 0
Assolon Va por buen camino
Conocer ip publica del router

Muchas gracias, ahora mismo me vale para salir del paso. Lo que intento hacer es no depender de una web que me devuelva la ip, sino que yo pueda recuperar esa información del mismo router.
Responder Con Cita
  #4  
Antiguo 21-09-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Assolon
Muchas gracias, ahora mismo me vale para salir del paso. Lo que intento hacer es no depender de una web que me devuelva la ip, sino que yo pueda recuperar esa información del mismo router.
Creo que aunque consiguieras leer el dato del propio router, no te serviría para otros routers.
Responder Con Cita
  #5  
Antiguo 21-09-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Es probable que con snmp podás obtener el IP público del router, aunque desconozco como, te dejo la idea para que profundices en ella.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 21-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Qué es snmp?

// Saludos
Responder Con Cita
  #7  
Antiguo 21-09-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Bien... reconozco que debí explicarlo mejor:

SNMP = Simple Network Management Protocol

Muchos dispositivos de red, como routers, impresoras y otros, pueden administrarse con este protocolo. Indy, en la paleta Indy Clients hay un componente TidSNMP con el que pueden hacerse queries a un equipo remoto.

Es algo que yo no he tenido ocasión de programar, por eso simplemente lo lancé como una idea. De utilidad será el rfc1157: Simple Network Management Protocol (SNMP) y me parece que la cosa irá por el envío del query: public ip.ipAddrTable, según deduzco de lo dicho en esta página

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 21-09-2006 a las 19:37:44.
Responder Con Cita
  #8  
Antiguo 21-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
La verdad es que después de la explicación de jachguate, hasta me da un poco de vergüenza sugerir esto, pero puedes utilizar el Telnet para comunicarte con el router. Lo malo que tiene este método es que, como bien dice Casimiro, tendrás adaptarlo a cada modelo de router.

En cuanto al snmp, había oído hablar de el, se que mi router lo tiene, pero he de reconocer que apenas se como funciona. La verdad es que me ha picado la curiosidad y lo voy a poner en mi lista de cosas para aprender ...

Aquí te dejo un ejemplo de como hacerlo por telnet para un router COMTREND de telefónica (el que yo tengo). Espero que te sirva, al menos mientras no encuentres como hacerlo con snmp.

Edito:

El programa adjunto tiene un fallo en la función Conectar si se le pasa un nombre en vez de la ip, la función corregida seria la siguiente:
Código Delphi [-]
function Conectar(Host: string; Puerto: Integer): TSocket;
var
  Address: u_long;
  HostEnt: phostent;
  Addr: sockaddr_in;
begin
  Result:= INVALID_SOCKET;
  Address:= inet_addr(Pchar(Host));
  if Address = INADDR_NONE then
  begin
    HostEnt:= gethostbyname(PChar(Host));
    if HostEnt <> nil then
      Address:= PInAddr(HostEnt.h_addr_list^)^.S_addr;
  end;
  if Address <> INADDR_NONE then
  begin
    Result:= socket(AF_INET, SOCK_STREAM, 0);
    if Result <> INVALID_SOCKET then
    begin
      Addr.sin_family:= AF_INET;
      Addr.sin_addr.S_addr:= Address;
      Addr.sin_port:= htons(Puerto);
      if connect(Result, Addr, Sizeof(Addr)) = SOCKET_ERROR then
      begin
        closesocket(Result);
        Result:= INVALID_SOCKET;
      end;
    end;
  end;
end;
Archivos Adjuntos
Tipo de Archivo: zip TelScript.zip (27,2 KB, 61 visitas)

Última edición por seoane fecha: 21-05-2007 a las 20:10:52.
Responder Con Cita
  #9  
Antiguo 21-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Gracias Juan Antonio, ya probaré en la tarde a ver si mi adsl maneja snmp.

// Saludos
Responder Con Cita
  #10  
Antiguo 26-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Bueno, he estado "trasteando" un poco con el snmp. El protocolo, básicamente, permite leer o escribir variables en algunos aparatos. Cada una de estas variables se identifica por OID, una secuencia de números, por ejemplo la variable sysUptime tiene el siguiente OID "1.3.6.1.2.1.1.3.0". Hasta aquí todo correcto, he conseguido leer usando la api WinSmp algunas variables (SysUptime, SysName, interfaces, etc). Pero por mucho que busco no encuentro ninguna variable que devuelva la ip del router, es mas, programas como "Interface Traffic Indicator" permiten monitorizar por snmp el trafico de red, incluso da detalles sobre cada uno de los interfaces del router, pero no la ip. Otro programa como MIB Browser con un completo listado de OIDs tampoco tiene información sobre la ip publica del router.

Todo esto me lleva a la siguiente duda ¿Se puede averiguar la ip publica del router por snmp? Si alguien esta familiarizado con el protocolo snmp, o conoce algún programa que de esa información me gustaría que lo comentase para así saber que no estoy buscando algo que no existe. Y lo que ya seria fantástico es que conociera su OID
Responder Con Cita
  #11  
Antiguo 26-09-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
En este sitio encontré un snmpWalk para windows. En la oficina no tengo el equipo como para probarlo, así que esa tarea te la dejo a vos. Entiendo que el programilla recorre (con next, next) todos los valores de un dispositivo dado un prefijo, por lo que bien podríamos, por deducción, determinar el OID que nos interesa, o al menos aproximarnos a él.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #12  
Antiguo 26-09-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
jachguate el programa funciona de maravilla, me da un listado completo de la variables del router, pero lamentablemente ninguna se corresponde con la ip publica. Me da las típicas sobre el sistema, todo tipo de estadísticas sobre el trafico, una lista de los interfaces y sus direcciones MAC, pero nada de ips

Estoy casi seguro de que no es una de la variables estándar, puede que sea particular de algún fabricante. Pero como no lo puedo asegurar sigo esperando que alguien me ponga sobre la pista de algún programa que consiga leer ese dato.
Responder Con Cita
  #13  
Antiguo 26-09-2006
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Ponemos premio al que lo consiga?
Responder Con Cita
  #14  
Antiguo 10-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Aunque este hilo es viejito, parece que no hay una conclusion.
Aqui:
http://www.ajpdsoft.com/modules.php?...download&cid=1
Hay un programa con codigo en delphi que se llama Aviso cambio IP publica.
Este programa trabaja con o sin router, lo he probado con diferentes router y funciona, no se si lo conoceis, pero es interesante.
Saludos
Responder Con Cita
  #15  
Antiguo 10-07-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Hola Caral, si no me equivoco, el programa usa el método de consultar una página web, y si es así, el código lo puedes ver en este mismo hilo.

O usando wininet aquí
Responder Con Cita
  #16  
Antiguo 10-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me parece que efectivamente llama a esta pagina http://www.ajpdsoft.com/ip.php
No estoy muy seguro.
El programa hace otras cosas interesantes, como enviarte un email si cambio la ip, entre otras.
Bueno, la idea es aportar algo mas.
Saludos
Responder Con Cita
  #17  
Antiguo 10-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Por cierto, otro programa interesante:
http://www.lookatlan.com/
En Download, esta Look@Lan.
Este muestra los equipos en la red, se conecta a ellos, muestra los puestos abiertos en cada equipo, etc.
Esta interesante.
Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Obtener la IP pública DML Internet 4 22-01-2008 15:11:48
Ip Publica ggram2 Internet 2 05-05-2006 23:45:59
Saber IP pública D@byt Internet 8 18-10-2005 10:29:18
Acceder a un router FunBit Redes 4 04-09-2005 14:52:10
Función Pública. marcoszorrilla Humor 0 30-03-2004 00:44:05


La franja horaria es GMT +2. Ahora son las 01:10:54.


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
Copyright 1996-2007 Club Delphi