Ver Mensaje Individual
  #1  
Antiguo 04-10-2011
dtomeysoto dtomeysoto is offline
Miembro
 
Registrado: dic 2005
Posts: 173
Reputación: 19
dtomeysoto Va por buen camino
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.
Responder Con Cita