将某一主机域名解析为IP地址。 使用 WinSock 单元; 过程如下: function HostToIP(Name: string; var Ip: string): Boolean; var wsdata : TWSAData; hostName : array [0..255] of char; hostEnt : PHostEnt; addr : PChar; begin WSAStartup ($0101, wsdata); try gethostname (hostName, sizeof (hostName)); StrPCopy(hostName, Name); hostEnt := gethostbyname (hostName); if Assigned (hostEnt) then if Assigned (hostEnt^.h_addr_list) then begin addr := hostEnt^.h_addr_list^; if Assigned (addr) then begin IP := Format ('%d.%d.%d.%d', [byte (addr [0]), byte (addr [1]), byte (addr [2]), byte (addr [3])]); Result := True; end else Result := False; end else Result := False else begin Result := False; end; finally WSACleanup; end end; 测试时请在在线状态。 测试代码: var IP: string; DNS: string; begin DNS := InputBox('输入DNS域名', '主机名称:', ''); if HostToIp(DNS, IP) then showmessage(IP); end; 作者:Latfi Baran 我测试Kingron给出的用法时,hostEnt老是=nil。 后来我在用gethostbyname(...)之前,加入WSAStartup(...),终于一切OK。 Winsock单元中没有getaddressbyname() |