티스토리 뷰

반응형

프로그래밍 개발을 하다보면,

내부IP or 외부IP 정보가 필요할 때가 있습니다.

로그 기록할 때 주로 많이 필요로 합니다.

 

내부IP 주소는 윈도우 함수로 쉽게 구할 수 있습니다.

하지만 외부IP 주소는 PC 자체에서 구하기는 쉽지 않습니다.

 

주로 사용하는 방식은 외부 특정 서버와 통신할 때 반환되는 정보로 외부IP주소를 구합니다.

서버 호스트에 아래 프로그램을 업로드하고 호출하는 방식으로 외부 IP를 구할 수 있습니다.

 myip.asp 의 내용은

 <%
  Dim connect_IP
  connect_IP = request.ServerVariables("Remote_Addr")
  response.write connect_IP 
  %>

 

PHP로 작성하려면

  <?
  echo $_SERVER['REMOTE_ADDR']
  ?>

 


[ 함수 정의 ]

function GetIpAddress() : String; // 로컬IP 구하기
function GetxIpAddress(): String; // 외부IP 구하기

[ 함수 본문 ] 내부 IP 구하기

//
// Local IP 구하기
//
function GetIpAddress(): String;
type
  pu_long = ^u_long;
var
  varTWSAData: TWSAData;
  varPHostEnt: PHostEnt;
  varTInAddr: TInAddr;
  namebuf: Array [0 .. 255] of AnsiChar;
begin
  try
    try
      If WSAStartup($101, varTWSAData) <> 0 Then
        Result := ''
      Else
      Begin
        gethostname(namebuf, SizeOf(namebuf));
        varPHostEnt := gethostbyname(namebuf);
        varTInAddr.S_addr := u_long(pu_long(varPHostEnt^.h_addr_list^)^);
        Result := inet_ntoa(varTInAddr);
      End;
    except
      Result := '';
    end;
  finally
    WSACleanup;
  end;
end;

 

[ 함수 본문 ] 외부 IP 구하기

//

// 외부 IP구하기
//
function GetxIpAddress(): String;
var
  IdHTTP: TIdHttp;
begin

  Result := '';



  // 외부 IP를 얻어 온다.
  try
    try

      IdHTTP := TIdHttp.Create(NIL);


      // 서버에 아래 프로그램을 업로드하고 호출하는 방식으로 외부 IP를 구할 수 있다.

      // myip.asp 의 내용은

      //<%
      //Dim connect_IP
      //connect_IP = request.ServerVariables("Remote_Addr")
      //response.write connect_IP 
      //%>

      // PHP로 작성하려면

      //<?
      //echo $_SERVER['REMOTE_ADDR']
      //?>

      // 아래 사이트는 내가 사용하는 사이트이고, 고쳐서 사용하기 바람     
      Result := IdHTTP.Get('http://www.customem.co.kr/myip.asp");


    except

    end

  finally

    IdHTTP.Free;

  end;

end;

 

반응형
댓글