Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-08-2018
MARX MARX is offline
Miembro
NULL
 
Registrado: abr 2016
Posts: 35
Poder: 0
MARX Va por buen camino
Como determinar IP publica en C++ builder

Hola. Necesito su ayuda. Quisiera saber si hay alguna función en builder c++ para determinar la IP publica (Ip que me asigna el proveedor de internet). Desde ya muchas gracias a quienes me den una mano.

Saludos
MARX
Responder Con Cita
  #2  
Antiguo 28-08-2018
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por MARX Ver Mensaje
Hola. Necesito su ayuda. Quisiera saber si hay alguna función en builder c++ para determinar la IP publica (Ip que me asigna el proveedor de internet). Desde ya muchas gracias a quienes me den una mano.

Saludos
MARX

No la hay pero puedes leerla de una web que te la devuelva como https://dynupdate.no-ip.com/ip.php


Un ejemplo de como hacerlo:


Código PHP:
char PaginaWebIP1[] = "https://dynupdate.no-ip.com/ip.php";
char PaginaWebIP2[] = "http://www.whatismyip.org/";

//---------------------------------------------------------------------------
// Lee Buffer hasta encontrar una estructura de IP.
// Devuelve true si la encuentra y la copia en IP que debe tener espacio
// para 16 caracteres. 
bool ParsingIP(char *IP, char* Buffer, int Size)
{
   
bool Result = false;
   
char* pt1 = strchr(Buffer, '.');
   
char* pt2 = pt1;
   
char* pt3 = pt1;

   for(
int n=0; n<16; n++) IP[n]=0;

   for(;
pt1;){
     
pt2 = strchr(pt1+1, '.');
     if(
pt2) pt3 = strchr(pt2+1, '.');
     if(
pt1 && pt2 && pt3)
     if((int)
pt2-(int)pt1 < 5 && (int)pt3-(int)pt2 < 5)
     
Result = ((int)pt2-(int)pt1 > 1 && (int)pt3-(int)pt2 > 1);
      
Result = Result && ((int)pt1-(int)Buffer<Size) &&  ((int)pt2-(int)Buffer<Size) &&  ((int)pt3-(int)Buffer<Size);
     if(
Result){
       for(
pt1--; isdigit(*pt1); pt1--); pt1++;
       
Result = (*pt1!='.');
       if(
Result){
         for(
pt2--; isdigit(*pt2); pt2--); pt2++;
         
Result = (*pt2!='.');
         if(
Result){
           for(
pt3++; isdigit(*pt3); pt3++); pt3--;
           
Result = (*pt3!='.');
           if(
Result) strncpy(IP, pt1, (int)pt3-(int)pt1+1);
         }
       }
     }
     if(
Result) break;
     
pt1 = pt2;
   }

   return 
Result;
}
//---------------------------------------------------------------------------
// Lee la IP de cualquier Web que la de y la busca
AnsiString GGetIP(AnsiString URL)
{
  
HINTERNET hNet;
  
HINTERNET hUrl;
  
int LBuf = 512;
  
char *Buffer = new char[LBuf];
  
char IP[16];
  
IP[15] = 0;
  
DWORD BytesRead = 0;
  
AnsiString Result = "";

  if(
InternetAttemptConnect(0) != ERROR_SUCCESS) return Result;

  if(
URL == "") URL = PaginaWebIP1;
  
hNet = InternetOpen("agent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
  
SetCursor(LoadCursor(0, IDC_WAIT));
  if (
hNet){
    
hUrl = InternetOpenUrl(hNet, URL.c_str(), NULL, 0, INTERNET_FLAG_RELOAD, 0);
    if (
hUrl){
      
ZeroMemory(Buffer, sizeof(Buffer));
      
// Lee la pagina web...
      
bool IRead;
      
int Solapa = 15;
      for(
int S=0;;){
        
IRead = InternetReadFile(hUrl, Buffer + S, LBuf-1-S, &BytesRead);
        
S = Solapa;
        if(
IRead && BytesRead==0) break;
        if(
ParsingIP(IP, Buffer, LBuf)) break;
        
Move(Buffer+LBuf-1-S, Buffer, S);
      }
        
// ¿formato correcto?
        
if(inet_addr(IP)!=INADDR_NONE)
          
Result = (AnsiString)IP;
      
InternetCloseHandle(hUrl);
    }
    
InternetCloseHandle(hNet);
  }
  
SetCursor(LoadCursor(0, IDC_ARROW));

  
delete Buffer;
  return 
Result;
} 



Saludos.
Responder Con Cita
  #3  
Antiguo 29-08-2018
MARX MARX is offline
Miembro
NULL
 
Registrado: abr 2016
Posts: 35
Poder: 0
MARX Va por buen camino
Gracias escafandra. Lo voy a probar a ver como resulta y te aviso
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
Como determinar la ip de un pc JoeyJordison Varios 1 14-01-2007 18:13:06
como determinar el navegador por defecto Velia API de Windows 4 13-11-2005 16:54:10
Como Determinar Monitor a Color ???? AGAG4 Varios 1 27-09-2005 05:07:03
como saver mi ip publica!!! acertij022 Internet 1 17-05-2004 22:09:36
¿Como determinar el tipo de Impresora? jgutti Impresión 4 20-02-2004 01:11:36


La franja horaria es GMT +2. Ahora son las 11:53:36.


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