Utilizamos cookies propias y de terceros. Al navegar entendemos que aceptas el uso de cookies. +Info.
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Usuario
· Wiki

Obener dirección IP, MAC de la tarjeta de red y nombre del PC en la red o hostname - Delphi
Lenguaje de programación Borland Delphi


Explicamos en este truco Delphi cómo obtener la dirección MAC de la tarjeta de red del equipo, el nombre de red del equipo (hostname) y la dirección IP del equipo en la red. Para ello utilizaremos WinSock y NetBios.


Os mostramos el código fuente (source code) Delphi para obtener el nombre del equipo en la red (hostname), la IP y la dirección MAC de la tarjeta de red.

Añadiremos un formulario, en el USES del mismo añadiremos Nb30 y WinSock. Añadiremos un botón al formulario y en el evento OnClick del botón introduciremos el siguiente código:

 procedure TForm1.Button1Click(Sender: TObject);
 Type
     // Estructura que une el estado del adaptador de red
     // con una matriz de estructuras TNameBuffer
    ASTAT = record
       adapt: TAdapterStatus;
       NameBuff: Array[0..29] Of TNameBuffer;
  end;
 Var
    Adaptador: ASTAT;
    Ncb: TNCB;
    Nombre: String;
    DatosSocket: WSAData;
    BloqueIP: PHostEnt;
    DirIP: in_addr;
 begin
    With Ncb Do //Inicializamos la estructura para ejecutar
     Begin
       ncb_command := char(NCBASTAT);
       ncb_lana_num := char(0);  //asumimos que sólo hay un adaptador
       ncb_callname := '*';  //y no facilitamos nombre
       ncb_buffer := @Adaptador;  //dirección de la estructura para obtener los datos
       ncb_length := sizeof(Adaptador);  //los datos devueltos
     End;

    Netbios(@Ncb);  //Llamada a NetBios

   // Mostramos los datos
    With Adaptador.adapt Do
       ShowMessage('La dirección MAC es: ' +
         IntToHex(Integer(adapter_address[0]), 2) +
         IntToHex(Integer(adapter_address[1]), 2) +
         IntToHex(Integer(adapter_address[2]), 2) +
         IntToHex(Integer(adapter_address[3]), 2) +
         IntToHex(Integer(adapter_address[4]), 2) +
         IntToHex(Integer(adapter_address[5]), 2));

    WSAStartup($0101, DatosSocket);  //Inicializamos Windows sockets
    SetLength(Nombre, MAX_PATH);  //obtenemos el nombre de nuestro equipo
    gethostname(PChar(Nombre), MAX_PATH);
     //Usamos el nombre del equipo para obtener un bloque de información sobre IP
    BloqueIP := gethostbyname(PChar(Nombre));
    //Recuperamos la dirección IP del bloque
    CopyMemory(@DirIP, (BloqueIP^).h_addr_list^, BloqueIP.h_length);

    ShowMessage('Dirección IP del equipo: ' + inet_ntoa(DirIP));
    ShowMessage('Nombre del PC en la red (hostname): ' + nombre);
 end;




Publicado el: 2003-10-14

Este sitio web NO CONTIENE malware, todos los programas con código fuente aquí. Autor: Alonso Javier Pérez Díaz Google+ Síguenos en Google+