Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Saber Direccion IP Externa
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Saber Direccion IP Externa 
 
Necesitamos un control HttpClient y un label

PUBLIC MiIP AS String

PUBLIC SUB Form_Open()

 MiHttp.url = "http://www.cual-es-mi-ip.net/"
 MiHttp.get()
END

PUBLIC SUB MiHttp_Finished()
  DIM Buffer AS String
  IF Lof(MiHttp) THEN    
    READ #MiHttp, Buffer, Lof(MiHttp)
  END IF  
  MiIP = Between(Buffer, "<span>", "</span>")
 Label1.text = miip
END

FUNCTION Between(Datos AS String, Cadena1 AS String, Cadena2 AS String) AS String
  
  DIM iinf AS Integer
  DIM isup AS Integer
  
  iinf = InStr(Datos, Cadena1) + Len(Cadena1)
  isup = InStr(Datos, Cadena2, iinf)
  
  RETURN Mid(Datos, iinf, isup - iinf)
  
END

PUBLIC SUB MiHttp_Connect()

  Label1.text = "Conectando..."

END
 


Espero que os guste.
Saludos!
 




===================
Sube tus clases, módulos o funciones a Mi Web

No soy un completo inútil. Por lo menos sirvo de mal ejemplo
 
Juan Luis Lopez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Saber Direccion IP Externa 
 
Primero muchas gracias por tu códgio, nunca habia utilizado el control httpClient.

He visto tu codigo, me parece muy interesante, pero a mi no me salia la ip,  sino parte del código en html de la pagina, pero  al final del label salia la ip.

Lo he ampliado un poco para que solo salga en el label la ip:

' gambas class file
PUBLIC MiIP AS String

PUBLIC SUB Form_Open()

 MiHttp.url = "http://www.cual-es-mi-ip.net/"
 MiHttp.get()
END

PUBLIC SUB MiHttp_Finished()
  DIM Buffer AS String
  DIM pos AS Integer
  DIM letra AS String
  DIM a AS Integer
  IF Lof(MiHttp) THEN    
    READ #MiHttp, Buffer, Lof(MiHttp)
  END IF
  
  buffer = Between(Buffer, "<span>", "</span>")
  
'esta parte es la que busca el 1º caracter de ">" empezando desde el final del buffer ya recortado, para que apartir de este extraiga la ip...
  FOR a = Len(buffer) TO 0 STEP -1
  letra = Mid(buffer, a, 1)
  IF letra = ">" THEN
    pos = a + 1
    a = 0
    ENDIF
  NEXT

'pos: es la posicion del primer caracter despues del ">"  
  
  MiIP = Mid$(Buffer, pos, Len(buffer))
 label1.text = miip
END

FUNCTION Between(Datos AS String, Cadena1 AS String, Cadena2 AS String) AS String
  
  DIM iinf AS Integer
  DIM isup AS Integer
  
  iinf = InStr(Datos, Cadena1) + Len(Cadena1)
  isup = InStr(Datos, Cadena2, iinf)
  
  RETURN Mid(Datos, iinf, isup - iinf)
  
END

PUBLIC SUB MiHttp_Connect()

  Label1.text = "Conectando..."

END
 


Asi obtengo esta salida de pantalla:

ipexterna

Nota:
Para tener el control  HttpClient, necesitamos tener el componente gb.net.curl seleccionado.
gbnetcurl
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Saber Direccion IP Externa 
 
usen esta url
 http://dynupdate.no-ip.com/ip.php

y ahorran  código
 



 
codificador - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Saber Direccion IP Externa 
 
codificador

La verdad es que si se ahorra codigo...     

Pero bueno, lo útil es poder analizar una pagina web y encontrar la información que necesites....


Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Saber Direccion IP Externa 
 
Codificador WINS..xD
 



 
 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Saber Direccion IP Externa 
 
mmm Esto está más currado que lo que yo hice en su dia...


Aqui utilice de por medio el FTP y WGET
http://edrossuse.blogspot.com/2011/...ion-ip-sin.html
 




===================
Saludos / Best Regards

Pedro Aguilar

http://edrossuse.blogspot.com
Desarrollador de LNXGEST
 
estrella_de_galicia - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Saber Direccion IP Externa 
 
Me gusta más esta: http://whatismyip.org/
 



 
geaplanet - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Saber Direccion IP Externa 
 
Me gusta mas la opcion de codificador asi no tienes que andar extrayendo codigo Html de la pagina.
Habría alguna forma de que se ponga en un panel de ubuntu?
 




===================
Sube tus clases, módulos o funciones a Mi Web

No soy un completo inútil. Por lo menos sirvo de mal ejemplo
 
Juan Luis Lopez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Saber Direccion IP Externa 
 
Juan Luis Lopez escribió: [Ver mensaje]
Me gusta mas la opcion de codificador asi no tienes que andar extrayendo codigo Html de la pagina.
Habría alguna forma de que se ponga en un panel de ubuntu?





Aquí dejo una primera versión de un programita que por medio de un trayicon muestra la IP pública en el área de notificaciones de un panel.
El dato de la IP pública se actualiza cada 30 minutos, pero ese valor se puede cambiar, naturalmente, desde el código. Aunque una futura mejora sería el tener una ventana de Settings. Otra mejora, sería poder actualizar el valor de la IP en el momento que uno lo quiera......... pero esas mejoras ya se las dejo a quien le pueda servir este pequeño código.

Por cierto, los elementos fueron creados totalmente por código, como que hoy estaba inspirado, jejeje. Se parece mucho a python. Lo malo es que cuando mando el QUIT me aparece una advertencia:

WARNING: 9 allocation(s) non freed.


Alguien sabe como puedo liberar la memoria?

Aquí el código, que está contenido en un módulo y que está además como startup class.
También necesitan tener habilitado el componente net.curl

myipgb

' gambas module file
' mIPmodule.module
' Debe ser la Startup Class
'
' Usa net.curl

PUBLIC trayIP AS TrayIcon
PUBLIC mTray AS Menu
PUBLIC mIP AS Menu
PUBLIC mCopy AS Menu
PUBLIC mQuit AS Menu
PUBLIC TimerIP AS Timer
PUBLIC HttpClientIP AS HttpClient
'PUBLIC Fx AS NEW Form
  
PUBLIC SUB Main()

  DIM Fx AS NEW Form
  
  trayIP = NEW TrayIcon AS "trayIP"
  trayIP.Picture = Stock["16/network"]
  trayIP.Visible = TRUE
  
  mTray = NEW Menu(Fx, TRUE) AS "mTray"
  mIP = NEW Menu(mTray) AS "mIP"
  mIP.Caption = "IP"
  mCopy = NEW Menu(mTray) AS "mCopy"
  mCopy.Caption = "Copy IP"
  mCopy.Picture = Stock["16/copy"]
  mQuit = NEW Menu(mTray) AS "mQuit"
  mQuit.Caption = "Quit"
  mQuit.Picture = Stock["16/quit"]
  
  TimerIP = NEW Timer AS "TimerIP"
  TimerIP.Delay = 1800000 ' 30 min
  TimerIP.Start
  
  HttpClientIP = NEW HttpClient AS "HttpClientIP"
  HttpClientIP.URL = "http://whatismyip.org/"
  HttpClientIP.Async = TRUE
  HttpClientIP.Get
  
END

PUBLIC SUB trayIP_Menu()
  
  mTray.Popup
  
END

PUBLIC SUB TimerIP_Timer()
  
  HttpClientIP.Get
  
END

PUBLIC SUB HttpClientIP_Finished()
  
  DIM sIP AS String
  IF Lof(HttpClientIP) THEN    
    READ #HttpClientIP, sIP, Lof(HttpClientIP)
  END IF
  PRINT Time(Now), sIP
  mIP.Caption = sIP
  
END

PUBLIC SUB mCopy_Click()
  
  Clipboard.Copy(mIP.Caption)
  
END

PUBLIC SUB mQuit_Click()
  
  QUIT
  
END

 


Saludos!
 



 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Saber Direccion IP Externa 
 
Hey!

Pude ponerlo en un script gambas, je! Casi con ningún cambio.
He aquí el script, pasen el código a un fichero de texto plano, guardenlo y asignenle permiso de ejecución.

#!/usr/bin/env gbs2

' myipgb.gbs - Saber la IP pública
' $ ./myipgb.gbs [tiempo en ms]

USE "gb.gui"
USE "gb.form"
USE "gb.net"
USE "gb.net.curl"

PUBLIC F AS NEW Form
PUBLIC TimerIP AS Timer
PUBLIC TrayIP AS TrayIcon
PUBLIC mTray AS Menu
PUBLIC mIP AS Menu
PUBLIC mCopy AS Menu
PUBLIC mQuit AS Menu
PUBLIC HttpClientIP AS HttpClient

PUBLIC SUB Main()

  mTray = NEW Menu(F, TRUE)
  mTray.Visible = FALSE
  
  mIP = NEW Menu(mTray) AS "mIP"
  mIP.Caption = "IP"
  mCopy = NEW Menu(mTray) AS "mCopy"
  mCopy.Picture = Stock["16/copy"]
  mCopy.Caption = "Copy IP"
  mQuit = NEW Menu(mTray) AS "mQuit"
  mQuit.Picture = Stock["16/quit"]
  mQuit.Caption = "Quit"
  
  TrayIP = NEW TrayIcon AS "TrayIP"
  TrayIP.Picture = Stock["16/network"]
  TrayIP.Visible = TRUE
  
  HttpClientIP = NEW HttpClient AS "HttpClientIP"
  HttpClientIP.URL = "http://whatismyip.org/"
  HttpClientIP.Async = TRUE
  HttpClientIP.Get
  
  TimerIP = NEW Timer AS "TimerIP"
  IF Val(Application.Args[1]) THEN
    TimerIP.Delay = Val(Application.Args[1])
  ELSE
    TimerIP.Delay = 1800000 ' 30 min
  ENDIF
  TimerIP.Start

END

PUBLIC SUB TimerIP_Timer()

  HttpClientIP.Get

END

PUBLIC SUB mQuit_Click()

  PRINT "QUIT"
  QUIT

END

PUBLIC SUB TrayIP_Menu()

  mTray.Popup

END

PUBLIC SUB HttpClientIP_Finished()

  DIM sIP AS String
  IF Lof(HttpClientIP) THEN    
    READ #HttpClientIP, sIP, Lof(HttpClientIP)
  END IF
  PRINT Time(Now), sIP
  mIP.Caption = sIP

END

PUBLIC SUB HttpClientIP_Error()
  
  PRINT "ERROR"
  mIP.Caption = "IP"
  
END

PUBLIC SUB mCopy_Click()
  
  Clipboard.Copy(mIP.Caption)
  
END

PUBLIC SUB mIP_Click()
  
  mIP.Caption = "IP"
  HttpClientIP.Get
  
END
 


Le he agregado unas cuantas cosillas de más, entre ellas el poder invocarlo con el tiempo de actualización (en ms) que quieran:

$ ./myipgb.gbs 60000
 


Saludos!
 



 
razaAztk - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuarioVer la galería personal del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron