随笔 - 110  文章 - 28 评论 - 26 

留言簿(1)

随笔分类(103)

随笔档案(110)

文章分类(25)

文章档案(28)

新闻档案(3)

友情连接

  • 小蜜蜂
  • 马氏膏药网
  • 淋巴结肿大,淋巴结核,淋巴结炎 乳腺增生,小叶增生 颈椎病,腰椎病,腰间盘突出 马氏淋巴消炎贴,马氏增生散结贴,马氏关节肌肉贴
  • 黑客基地
  • 全球最大的黑客门户网站

最新随笔

积分与排名

  • 积分 - 143116
  • 排名 - 44

最新评论

阅读排行榜

评论排行榜

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

FeedBack:
# re: GetHostByName()[未登录] 2009-07-28 10:44 sunny
谢谢你的资料,能不能分享怎样获取局域网内所以机器的ip地址呢,在网上有找一些资料,可是很慢。谢谢  回复  更多评论
  
只有注册用户登录后才能发表评论。

笔记和文章,可能抄袭,只为学习,请原谅