Lo he estado buscando... pero o no está o no lo encuentro.
Alguien tiene una función en Xailer/Harbour o un Wrapper para conocer la IP pública???
Gracias.
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
IP Publica
IP Publica
Un Saludo,
Xevi.
Xevi.
Re: IP Publica
Buscando en foros, sacando algo de allí y algo de los samples de Xailer...
Me respondo a mi mismo.
Por si a alguno le interesa o necesita, esto sirve perfectamente para saber cual es nuestra IP pública.
Me respondo a mi mismo.
Código: Seleccionar todo
Function PublicIP()
LOCAL hData, cData
LOCAL cResponse := ""
WITH OBJECT TInternet():New()
IF :Open()
IF !Empty( hData := :OpenURL( "http://checkip.dyndns.org" ) )
WHILE :ReadFile( hData, @cData, 65536 )
cResponse += cData
ENDDO
:CloseURL( hData )
ENDIF
:Close()
ENDIF
END
Return allTrim( substr( substr( cResponse, rat( "<body>", cResponse ) + 26 ), 1, At( "<", substr( cResponse, rat( "<body>", cResponse ) + 26 ) ) - 1 ) )
Por si a alguno le interesa o necesita, esto sirve perfectamente para saber cual es nuestra IP pública.
Un Saludo,
Xevi.
Xevi.
Re: IP Publica
He encontrado la clase en C para la IPpublica.
Se ve que dan permiso para publicarla...
No puedo hecharla a andar para Xailer.
Se podria incorporar para Xailer, no???
Se ve que dan permiso para publicarla...
No puedo hecharla a andar para Xailer.
Se podria incorporar para Xailer, no???
Código: Seleccionar todo
/*
Autor : Albeiro Valencia
: IP externo
Fecha : 30/07/2018
Todos los derechos reservados
albeiroval@gmail.com
Se llama asi..
IpExterna:=IPPUBLIC()
*/
#include <stdio.h>
#include <urlmon.h>
#include <WinInet.h>
#include "hbapi.h"
#pragma comment(lib, "urlmon.lib")
//-----------------------------------//
char *GetIP();
bool IsLanOrModem();
//-----------------------------------//
HB_FUNC( IPPUBLIC )
{
char *pszChar = "";
strcpy( pszChar, GetIP() );
hb_retc( pszChar );
}
//-----------------------------------//
char *GetIP()
{
char szPath[256], szRead[128], szRet[256];
char szSite[] = "http://checkip.dyndns.org/Current IP Check.htm";
char *Token;
char *cRet;
memset(szPath,0,sizeof(szPath));
memset(szRet,0,sizeof(szRet));
GetTempPath(256, szPath);
strcat(szPath, "my_ip.txt");
if( URLDownloadToFile(0, szSite, szPath, 0, 0) == S_OK )
{
FILE *fIpHtm = fopen(szPath, "r");
if( fIpHtm )
{
fgets(szRead, 128, fIpHtm);
Token = strrchr(szRead, ':');
Token = strtok(Token, "<");
memcpy(szRead, Token + 2, sizeof(szRead));
strcpy(cRet, szRead);
return cRet;
}
else
{
return "Error.";
}
}
else
return "Error.";
}
//-----------------------------------//
HB_FUNC( ISLANCONEXION )
{
hb_retl( IsLanOrModem() );
}
//-----------------------------------//
bool IsLanOrModem()
{
DWORD result;
if (!InternetGetConnectedState(&result, 0))
return false;
return result & INTERNET_CONNECTION_LAN || result & INTERNET_CONNECTION_MODEM;
}
Un Saludo,
Xevi.
Xevi.
Re: IP Publica
Xevi,
por lo que veo en el fuente, esta rutina depende de otras librerías, y yo no creo que tengamos ninguna necesidad de crear más dependencias.
La runtina anterior que pusiste es más que suficiente, y debería de funcionar perfectamente. Y si no quieres depender de un servidor ajeno para comprobar la IP, siempre puedes colgar el siguiente script de PHP en tu propio servidor:
Este script te devuelve directamente la IP, y nada más, así que no tienes que ir cortando la cadena ni dependes de que en algún momento cambien el formato de dicha cadena.
por lo que veo en el fuente, esta rutina depende de otras librerías, y yo no creo que tengamos ninguna necesidad de crear más dependencias.
La runtina anterior que pusiste es más que suficiente, y debería de funcionar perfectamente. Y si no quieres depender de un servidor ajeno para comprobar la IP, siempre puedes colgar el siguiente script de PHP en tu propio servidor:
Código: Seleccionar todo
<?php
if ( !empty( $_SERVER[ 'HTTP_CLIENT_IP' ] ) )
echo $_SERVER[ 'HTTP_CLIENT_IP' ];
else if ( !empty( $_SERVER[ 'HTTP_X_FORWARDED_FOR' ] ) )
echo $_SERVER[‘HTTP_X_FORWARDED_FOR’];
else
echo $_SERVER[ 'REMOTE_ADDR' ];
?>
Re: IP Publica
Gracias por responder.
Bien, solo era como apunte... si se queria tener la funcion propia en C.
A mi, me sirve de lujo la que reporté.
Bien, solo era como apunte... si se queria tener la funcion propia en C.
A mi, me sirve de lujo la que reporté.
Un Saludo,
Xevi.
Xevi.