Q&A

  • 현재사용중인 ip만을 알고싶어요
여러개의 네트워크 어뎁터 (모뎀, ADSL..)가 설치되어 PC 에서 실제로

사용중인 IP ADDRESS 만을 알고 싶으면 어떻게 해야 하나요?

다음과 같이 하니까 어뎁터별로 IP 가 나오더라구요.

필요한것은 현재 연결되어 사용중인 IP 만 필요하거든요.

아시는 분 꼭 알려주세요.



procedure Tfmain.GetLocalIP;

type

TaPInAddr = array [0..10] of PInAddr;

PaPInAddr = ^TaPInAddr;

var

phe : PHostEnt; // HostEntry 구조체

pptr : PaPInAddr;

Buffer : array [0..MAX_PATH] of char;

lc_ip_addr : array[0..16] of char;

LocalIP : String;

i : Integer;

begin

LocalIP := '';

GetHostName(Buffer, SizeOf(Buffer));



phe := GetHostByName(buffer);

if (phe = nil) then begin

LocalIP := '0.0.0.0';

System.Exit;

end;



pptr := PaPInAddr(Phe^.h_addr_list);

i := 0;

while (pptr^[i] <> nil) do begin

LocalIP := StrPas(inet_ntoa(pptr^[i]^));

Inc(i);

end;

end;



1  COMMENTS
  • Profile
    유인철 2001.01.26 05:44
    현재사용중인 ip만을 알고싶어요 wrote:

    > 여러개의 네트워크 어뎁터 (모뎀, ADSL..)가 설치되어 PC 에서 실제로

    > 사용중인 IP ADDRESS 만을 알고 싶으면 어떻게 해야 하나요?

    > 다음과 같이 하니까 어뎁터별로 IP 가 나오더라구요.

    > 필요한것은 현재 연결되어 사용중인 IP 만 필요하거든요.

    > 아시는 분 꼭 알려주세요.

    >

    > procedure Tfmain.GetLocalIP;

    > type

    > TaPInAddr = array [0..10] of PInAddr;

    > PaPInAddr = ^TaPInAddr;

    > var

    > phe : PHostEnt; // HostEntry 구조체

    > pptr : PaPInAddr;

    > Buffer : array [0..MAX_PATH] of char;

    > lc_ip_addr : array[0..16] of char;

    > LocalIP : String;

    > i : Integer;

    > begin

    > LocalIP := '';

    > GetHostName(Buffer, SizeOf(Buffer));

    >

    > phe := GetHostByName(buffer);

    > if (phe = nil) then begin

    > LocalIP := '0.0.0.0';

    > System.Exit;

    > end;

    >

    > pptr := PaPInAddr(Phe^.h_addr_list);

    > i := 0;

    > while (pptr^[i] <> nil) do begin

    > LocalIP := StrPas(inet_ntoa(pptr^[i]^));

    > Inc(i);

    > end;

    > end;

    >

    이렇게 해보시져...



    function GetLocalIPAddressOrHostName(IP_Or_HostName: IP_HostName): string;

    var

    p : PHostEnt;

    s : array[0..128] of char;

    p2 : pchar;

    wVersionRequested : WORD;

    wsaData : TWSAData;

    begin

    {Start up WinSock}

    wVersionRequested := MAKEWORD(1, 1);

    WSAStartup(wVersionRequested, wsaData);



    {Get the computer name}

    GetHostName(@s, 128);

    p := GetHostByName(@s);

    if IP_Or_HostName = _HOSTNAME then

    Result := p^.h_Name

    else begin



    {Get the IpAddress}

    p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);

    Result := p2;

    end;

    {Shut down WinSock}

    WSACleanup; // socket 끝내기



    end;