Estimados compadres, saludes a la distancia y apeticion de una listero publicamos la rutina en C para saber cual en el IP Externo.\
el Señor Alberto Valencia de Venezuela nos autorizo a su publicacion.
/*
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;
}
// FINAL