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

留言簿(1)

随笔分类(103)

随笔档案(110)

文章分类(25)

文章档案(28)

新闻档案(3)

友情连接

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

最新随笔

积分与排名

  • 积分 - 143508
  • 排名 - 44

最新评论

阅读排行榜

评论排行榜

这个函数是GetHostByName()异步版本
这个函数不会引起阻塞,由于使用时要用到消息,所以有点麻烦,不过会者不难
声明如下:
HANDLE PASCAL FAR WSAAsyncGetHostByName ( HWND hWnd,
unsigned int wMsg, const char FAR * name, char FAR * buf,
int buflen );
         
hWnd 当异步请求完成时,应该接收消息的窗口句柄.
wMsg 当异步请求完成时,将要接收的消息.
name 指向主机名的指针.
buf 接收hostent数据的数据区指针.注意该数据区必须大于hostent结构的大小.这是因为不仅Windows Sockets实现要用该数据区域容纳hostent结构,hostent结构的成员引用的所有数据也要在该区域内.建议用户提供一个MAXGETHOSTSTRUCT字节大小的缓冲区.
buflen 上述数据区的大小.

我们用这个函数实现上节中同一功能:得到网站IP

全部代码如下:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
  //下面自己定义一个消息,因为这个函数必须用到
const
wm_getip=wm_user+100;//自己定义一个消息,
   type
  Tgetip=record//消息的结构
  msg:word;
  wparam:word;
  lparam:word;
  end;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private declarations }
procedure mymsg(var msg:Tgetip);Message wm_getip;//这就是消息函数
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses
winsock;

{$R *.dfm}

var
WData:tWSAData;
HEnt:HostEnt;
IPad:string;
h:thandle;

procedure tform1.mymsg(var msg:tgetip);
begin
 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;

procedure TForm1.Button1Click(Sender: TObject);
begin
WSAStartup(2,WData);//初始
h:=WSAAsyncGetHostByName(self.Handle,wm_getip,pchar(edit1.Text),pchar(@hent),MAXGETHOSTSTRUCT)
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
wsacancelasyncrequest(h);//可用于终止,不会引起阻塞
end;

end.

posted on 2009-02-02 22:06 小叶子 阅读(940) 评论(0)  编辑 收藏 引用 所属分类: delphi winsock
只有注册用户登录后才能发表评论。

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