Q&A

  • 로컬 PC의 IP
로컬PC의 IP를 알고 싶은데, 어케 만들어야 하지요?



팁에서 검색해서 봤는데, 도무지 잘 모르겠네요!



설명좀 부탁할게요!

3  COMMENTS
  • Profile
    하눌이 2001.05.09 00:43
    델파이 팁모아에서 "LOCAL IP"로 검색해 보세요..



    즐프 하시길...

    근데.. 즐프 = "즐겁께 프로그래밍 .. ? 인가... 클클..

  • Profile
    초보델피언 2001.05.09 00:59
    검색을 해보고선 질문을 올린건데요! ㅠㅠ



    검색해서 보고 가져다 붙여도 봤는데 잘 않돼여!



    뭔가를 잘못하고 있는거 같은데.....





    이걸루 가져다 해 볼려고 하는데...



    function LWToIP(LW: LongWord): string;

    begin

    Result := IntToStr(LW and $FF);

    LW := LW shr 8;

    Result := Result + '.' + IntToStr(LW and $FF);

    LW := LW shr 8;

    Result := Result + '.' + IntToStr(LW and $FF);

    LW := LW shr 8;

    Result := Result + '.' + IntToStr(LW and $FF);

    end;



    function TForm1.GetLocalIP: string;

    var

    Name, A: PChar;

    h: hostent;

    I: Integer;

    begin

    GetMem(Name,255);

    try

    I := GetHostName(Name,255);

    if I <> 0 then

    I := wsagetlastError;

    if I <> 0 then

    StatusBar1.Panels[0].Text := 'Error: ' + IntToStr(I)

    else begin

    h := GetHostByName(Name)^;

    if h.h_length <> 4 then Result := ''

    else begin

    A := h.h_addr_list^;

    I := 0;

    while (A^ <> #0) and (CompareStr(A,h.h_name) <> 0) do begin

    inc(I,4);

    Inc(A,4)

    end;

    if I < 4 then Result := h.h_name

    else begin

    while I >= 4 do begin

    Dec(A,4);

    Dec(I,4);

    Result := Result + LWToIP(PLongWord(A)^) + ', ';

    end;

    Delete(Result,Length(Result)-1,2);

    end

    end

    end

    finally

    FreeMem(Name)

    end

    end;





    좀 난감하네요! 설명좀 부탁할게요!









    하눌이 wrote:

    > 델파이 팁모아에서 "LOCAL IP"로 검색해 보세요..

    >

    > 즐프 하시길...

    > 근데.. 즐프 = "즐겁께 프로그래밍 .. ? 인가... 클클..

  • Profile
    하눌이 2001.05.09 02:23
    uses winsock;



    {$R *.DFM}



    procedure TForm1.Button2Click(Sender: TObject);

    var

    wsaData : TWSAData;

    slocal : array[0..255] of Char;

    phos : PHostEnt;

    addr : PChar;

    begin

    if (WSAStartup(MAKEWORD(1, 1), wsaData) <> 0) then exit;

    if (gethostname(slocal, sizeof(slocal)) = SOCKET_ERROR) then

    exit;

    phos := gethostbyname(slocal);

    if phos = nil then exit;

    addr := PChar(phos.h_addr_list^);



    Edit1.text := inet_ntoa(PInAddr(addr)^);



    WSACleanup();

    end;