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 Buscar Temas de Hoy Marcar Foros Como Leídos

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


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
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 03:21:40.


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