Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-08-2012
dmartinezn dmartinezn is offline
Miembro
 
Registrado: ene 2012
Ubicación: Cuba - Venezuela
Posts: 38
Poder: 0
dmartinezn Va por buen camino
OPtener IP de la PC en C++

Saludos
Quisiera saber de que forma podria optener el ip de la PC en la que estoy trabajando en C++ Builder.
Responder Con Cita
  #2  
Antiguo 24-08-2012
Gerson12 Gerson12 is offline
Miembro
NULL
 
Registrado: abr 2012
Ubicación: Peru-Lima
Posts: 138
Poder: 13
Gerson12 Va por buen camino
en la biblioteca <netdb.h> exite una funcion cuya declaracion es la siguiente.
Código:
Código:
struct hostent *gethostbyname(char *name);
aqui tienes un ejemplo de como usarla:
Código:
Código:
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

struct sockaddr whereto;
struct hostent *hp;
struct sockaddr_in *to;
char *target;
char *hostname;
 
memset(&whereto, 0, sizeof(struct sockaddr));
to = (struct sockaddr_in *)&whereto;
to->sin_family = AF_INET;
to->sin_addr.s_addr = inet_addr(target);
if (to->sin_addr.s_addr != -1)
   hostname = target;
else
{
   hp = gethostbyname(target);
   if (!hp)
      printf("host desconocido%s\n", target);
   else
   {
      to->sin_family = hp->h_addrtype;
      memcpy(&(to->sin_addr.s_addr), hp->h_addr, hp->h_length);
      hostname = hp->h_name;
      printf("gethostbyname ejecutado correctamente\n");
   }
}
esto no lo hize yo pero lo busque en san google amigo ^^ espero que te valga si necesitas la fuente donde la saque avisame ya que tengo entendi que no se dejan enlaces o algo asi
__________________
Gracias a todos por apoyarme ^^
Responder Con Cita
  #3  
Antiguo 24-08-2012
dmartinezn dmartinezn is offline
Miembro
 
Registrado: ene 2012
Ubicación: Cuba - Venezuela
Posts: 38
Poder: 0
dmartinezn Va por buen camino
Gracias por contestar
Ayer estuve probando ese ejemplo pero me da problemas en:
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>

[C++ Error] Unit1.cpp(8): E2209 Unable to open include file 'sys/socket.h'
[C++ Error] Unit1.cpp(9): E2209 Unable to open include file 'netdb.h'
[C++ Error] Unit1.cpp(25): E2450 Undefined structure 'sockaddr'
[C++ Error] Unit1.cpp(25): E2449 Size of 'whereto' is unknown or zero
[C++ Error] Unit1.cpp(25): E2450 Undefined structure 'sockaddr'
[C++ Error] Unit1.cpp(31): E2450 Undefined structure 'sockaddr'
Responder Con Cita
  #4  
Antiguo 24-08-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Código:
#include <winsock2.h>


String GetCurrentIP()
{
   WSADATA Wsa;
   char name[255];
   AnsiString ip;
   PHOSTENT hostinfo;

   if(WSAStartup(MAKEWORD(2,2),&Wsa) == 0 ){
     if(gethostname ( name, sizeof(name)) == 0){
       if((hostinfo = gethostbyname(name)) != NULL){
         ip = inet_ntoa (*(in_addr *)*hostinfo->h_addr_list);
       }
     }
     WSACleanup( );
   }
   return ip;
}

Ejemplo de uso:
Código:
Label1->Caption = GetCurrentIP();

Saludos.
Responder Con Cita
  #5  
Antiguo 24-08-2012
dmartinezn dmartinezn is offline
Miembro
 
Registrado: ene 2012
Ubicación: Cuba - Venezuela
Posts: 38
Poder: 0
dmartinezn Va por buen camino
Excelente!!, gracias!.
Una ultima cosa,seria posible detectar otro numero ip de otra tarjeta q de red que este puesta en la misma PC?
Responder Con Cita
  #6  
Antiguo 24-08-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Código:
//---------------------------------------------------------------------------
#include <windows.h>
#include <winsock2.h>
#include <Iphlpapi.h>
#include <stdio.h>
#include <conio.h>


#pragma comment(lib, "iphlpapi.lib")

#pragma hdrstop

//---------------------------------------------------------------------------

void GetIPAddress(void)
{
  PIP_ADAPTER_INFO AI, pAI;
  DWORD AILen;
  GetAdaptersInfo(0, &AILen);
  pAI = AI = (PIP_ADAPTER_INFO) new BYTE[AILen];
  if(!GetAdaptersInfo(pAI, &AILen)){
    do{
      printf("%s:\n", pAI->Description, pAI->Address[0]);
      printf("\tMAC: \t\t%.2X-%.2X-%.2X-%.2X-%.2X-%.2X\n", pAI->Address[0], pAI->Address[1], pAI->Address[2], pAI->Address[3], pAI->Address[4], pAI->Address[5]);
      printf("\tIP Address: \t%s\n\n", pAI->IpAddressList.IpAddress.String);
      pAI = pAI->Next;
    } while(pAI);
  }
  delete [] AI;
  getch();
}


int main()
{
  GetIPAddress();
  return 0;
}
Lista todas los adaptadores de red (físicos o virtuales) dando su MAC y su IP

Un detalle, para importar la API GetAdaptersInfo de la librería iphlpapi.dll en Builder 5 o lo haces dinámicamente o de forma estática como yo.

iphlpapi.lib la creas con la utilidad IMPLIB que viene con Builder.




Saludos.
Responder Con Cita
Respuesta



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
optener el listado de tablas Ryu Conexión con bases de datos 2 12-06-2006 19:29:11
optener porciento al revez.. sakuragi Varios 5 03-01-2006 23:39:11
optener valor de un formulario a otro en otra pagina.php sakuragi PHP 5 16-11-2005 17:22:58
Se puede optener un listado de direcciones a partir de una busqueda? Alfredo Internet 3 19-10-2005 16:10:31
Optener Nro Telefonico Danyeru Varios 11 29-03-2004 10:07:21


La franja horaria es GMT +2. Ahora son las 22:06:14.


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