将某一主机域名解析为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()
使用 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()
解决方案 »
- 换了新工作,闪分,进者有份!送完为止!!!
- 这回麻烦可大了,,,,,,,,,,,,,,,,,,,,,,,,,
- 数据库字段(字符型)中查某一字符个数,怎样比较快?
- ★★★★窗体中加入了三个FastReport的TfrReport控件做报表,为什么窗体打开的速度非常慢???高手们请进,在线等!!!谢谢★★★★
- 俺想知道rave是不是支持中文的字段名,我是刚用,怎么就是弄不出来呢?
- 如何让窗口最大化按扭变灰?
- 各位兄弟帮帮小弟呀!
- delphi中如何将一个DBF格式数据导入SQL
- 急!急!急!如何在WEBBROWSER中显示ASP网页
- 用delphi制作定制asp对象?
- c#前来拿分啊:),只有你把事件给我说清楚了,后边的分才能给你;
- 我确实没有搞清楚,请指教
使用 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;
=>202.108.37.40