gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。
所以用前定义hostent结构,并是一个指针
var
HEnt:PHostEnt;
PHostEnt在delphi定义如下
type
PHostEnt = ^THostEnt;
{$EXTERNALSYM hostent}
hostent = record
h_name: PChar;//主机名
h_aliases: ^PChar;//别名
h_addrtype: Smallint;
h_length: Smallint;
case Byte of
0: (h_addr_list: ^PChar);
1: (h_addr: ^PChar)//IP地址
end;
THostEnt = hostent;
下面写个例子
得到网站的IP
放三个edit在窗口上和一个button
uses
winsock;
procedure TForm1.Button1Click(Sender: TObject);
var
WData:TWSAData;
HEnt:PHostEnt;
ClName,IPad:string;
begin
WSAStartup(2,WData);//初始
//Gethostname(pchar(ClName),255);得到本机IP
HEnt:=GetHostByName(PChar(edit1.Text));//本机改成clname
with HEnt^ do
IPad:=Format('%d.%d.%d.%d',[Byte(h_addr^[0]),Byte(h_addr^[1]),Byte(h_addr^[2]),Byte(h_addr^[3])]);
edit2.Text:=hent^.h_name;//主机名
edit3.Text:=ipad;//得到ip
WSACleanup;//注销
end;
运行结果:(用:www.baidu.com测试)
edit1: www.baidu.com
edit2: www.a.shifen.com
edit3: 123.235.44.66
posted on 2009-02-02 18:34
小叶子 阅读(2495)
评论(1) 编辑 收藏 引用 所属分类:
delphi winsock