PDA

Ver la Versión Completa : Cómo obtener dirección IP si tienes mas de una tarjeta de red


dtomeysoto
04-10-2011, 16:53:15
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:


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, 17: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, 17:15:41
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, 18:18:04
Hola dtomeysoto.

Revisá si te puede servir este enlace (http://www.delphi3000.com/articles/article_1430.asp?SK=), acabo de probar el código en Delphi 7 y aparentemente funciona bién.

Un saludo.

Casimiro Notevi
04-10-2011, 18:38:45
Y por si acaso, siempre te queda el "plan B", extraer la información de ipconfig:


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, 18:53:55
Y por si acaso, siempre te queda el "plan B", extraer la información de ipconfig:


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