복수 도메인이나 복수 IP의 경우는 모르겠음..-_-;
 
uses WinSock;
 
function GetIPAddressFromDomainName(Host: PChar): String;
var
  WSAData1: WSADATA;
  HostEnt: PHostEnt;
  pAddr: PChar;
  addr: in_addr;
begin
  Result:='';
 
  // GetHostByName 을 쓰기 위해 WSAStartup 을 한번 해줘야 함
  if WSAStartup(MAKEWORD(2, 2), WSAData1)<>0 then Exit;
 
  // WSAStartup 호출이 제대로 되지 않음을 체크(?)
  if (LOBYTE(WSAData1.wVersion)<>2) or (HIBYTE(WSAData1.wVersion)<>2) then begin
    WSACleanup;
    Exit;
  end;
 
  // HostEnt 로 매개변수로 받아온 도메인이름의 정보를 받아옴
  HostEnt := GetHostByName(Host);
  if HostEnt=nil then Exit;
 
  // PChar 형 변수로 ip 주소를 옮김
  pAddr := HostEnt^.h_addr_list^;
  if pAddr=nil then Exit;
 
  // 옮긴 ip 주소를 in_addr 로 적절히 변환
  addr.S_un_b.s_b1 := pAddr[0];
  addr.S_un_b.s_b2 := pAddr[1];
  addr.S_un_b.s_b3 := pAddr[2];
  addr.S_un_b.s_b4 := pAddr[3];
 
  // 변환된 ip 주소를 반환
  Result := inet_ntoa(addr);
end;
Posted by bloodguy
,