Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Redes (https://www.clubdelphi.com/foros/forumdisplay.php?f=37)
-   -   Cómo obtener dirección IP si tienes mas de una tarjeta de red (https://www.clubdelphi.com/foros/showthread.php?t=76022)

dtomeysoto 04-10-2011 17:53:15

Cómo obtener dirección IP si tienes mas de una tarjeta de red
 
Hola, resulta que necesito obtener en un programa en Delphi la dirección IP de la tarjeta de red, para esto ya tengo implementada la siguiente función la cual funciona correctamente:

Código Delphi [-]
procedure GetHostNameIP(var HostName, IPaddr, WSAErr: string);
var
  Buffer: array[0..127] of Char;
  WSAData: TWSAData;
  HostEnt: PHostEnt;
begin
  HostName := EmptyStr;
  IPaddr   := EmptyStr;
  WSAErr   := EmptyStr;

  FillChar(Buffer, SizeOf(Buffer), #0);
  FillChar(WSAData, SizeOf(WSAData), #0);

  if WSAStartup(MAKEWORD(2, 0), WSADATA) = 0 then
    begin
      if GetHostName(@Buffer, SizeOf(Buffer)) = 0 then
        begin
          HostName := StrPas(@Buffer);
          HostEnt := GetHostByName(@Buffer);

          if Assigned(HostEnt) then
            IPaddr := inet_ntoa(PInAddr(HostEnt.h_addr_list^)^);
        end
      else
        case WSAGetLastError of
          WSAEFAULT        : WSAErr := 'WSAEFault';
          WSANOTINITIALISED : WSAErr := 'WSANotInitialised';
          WSAENETDOWN       : WSAErr := 'WSAENetDown';
          WSAEINPROGRESS    : WSAErr := 'WSAEInProgress';
        end;

      WSACleanup;
    end
  else
    WSAErr := 'Winsock is not responding."';
end;

Pero resulta que cuando ejecuto este programa en un servidor con dos tarjetas de red solo me va a devolver una sola dirección IP y necesito obtener las dos direcciones IP.

Podrían ayudarme a resolver este problema?
Gracias.

Casimiro Notevi 04-10-2011 18:08:41

Hola, te he modificado el título de la pregunta para que quede más claro que es lo que quieres.

dtomeysoto 04-10-2011 18:15:41

Cita:

Empezado por Casimiro Notevi (Mensaje 414518)
Hola, te he modificado el título de la pregunta para que quede más claro que lo que quieres.

Muchas gracias amigo.

ecfisa 04-10-2011 19:18:04

Hola dtomeysoto.

Revisá si te puede servir este enlace, acabo de probar el código en Delphi 7 y aparentemente funciona bién.

Un saludo.

Casimiro Notevi 04-10-2011 19:38:45

Y por si acaso, siempre te queda el "plan B", extraer la información de ipconfig:

Código:

Adaptador Ethernet Conexión de área local          :

        Sufijo de conexión específica DNS :
        Dirección IP. . . . . . . . . . . : 10.0.2.15
        Máscara de subred . . . . . . . . : 255.255.255.0
        Puerta de enlace predeterminada  : 10.0.2.2

Busca la línea/líneas "Dirección IP" y recoges el dato

dtomeysoto 04-10-2011 19:53:55

Cita:

Empezado por Casimiro Notevi (Mensaje 414524)
Y por si acaso, siempre te queda el "plan B", extraer la información de ipconfig:

Código:

Adaptador Ethernet Conexión de área local          :

        Sufijo de conexión específica DNS :
        Dirección IP. . . . . . . . . . . : 10.0.2.15
        Máscara de subred . . . . . . . . : 255.255.255.0
        Puerta de enlace predeterminada  : 10.0.2.2

Busca la línea/líneas "Dirección IP" y recoges el dato

si ya estaba pensando en eso hasta que apareció el post anterior. :D


La franja horaria es GMT +2. Ahora son las 02:09:48.

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