전에 도메인 명으로 IP를 알아오기와 비슷한 내용입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Uses WinSock; ... function My_LocalIP : String; var wData: WSADATA; HostName: String; pHostInfo: pHostEnt; begin WSAStartup(MAKEWORD(2, 2), wData); GetHostName(PAnsiChar(HostName), 512); pHostInfo := GetHostByName(PAnsiChar(Hos tName)); if Assigned(pHostInfo) then Result := IntToStr(ord(pHostInfo.h_addr_list^[0])) + '.' + IntToStr(ord(pHostInfo.h_addr_list^[1])) + '.' + IntToStr (ord(pHostInfo.h_addr_list^[2])) + '.' + IntToStr (ord(pHostInfo.h_addr_list^[3])) else Result := ''; WSACleanup; end; |
HostName에 값이 없는 경우 로컬IP의 내용이 나타납니다.
Uses 문에 Winsock을 추가해 주어야 합니다.
실제 IP를 읽어 오는 내용입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function My_RealIP : String; var IdHTTP: TIdHTTP; st: integer; begin Result := ''; // 못구했을땐 아무값도 없음 IdHTTP := TIdHTTP.Create(nil); try Result := IdHTTP.Get('http://checkip.dyndns.com'); st := pos(': ', Result); Result := Copy(Result, st + 1, MaxInt); st := pos('<', Result); Result := Copy(Result, 1, st - 1); finally IdHTTP.free; end; end; |
웹으로 내오는 내용을 짤라서 값을 표현합니다.
최신 댓글