谁能帮我解释一下每一句的意思?

longzhutuzi 2006-12-04 11:53:26
procedure TForm1.Button1Click(Sender: TObject);
var
Ip:string;
Ipstr:string;
Buffer:Array[1..32] of char;
i:integer;
WSData:TWSAdata;
Host:PHostEnt;
begin
if WSAstartup(2,WSData)<>0 then
begin
ShowMessage('WS2_32.DLL初始化失败!');
halt; end;
try
if GetHostName(@Buffer[1],32)<>0 then
begin
ShowMessage('没有得到主机名!');
halt;
end;
except
ShowMessage('没有成功返回主机名');
halt;
end;
Host := GetHostByName(@Buffer[1]);
if Host = nil then
begin
ShowMessage('IP地址为空');
halt;
end
else
begin
Edit2.Text := Host.h_name;
Edit3.Text := Chr(Host.h_addrtype+64);
for i:=1 to 4 do
begin
Ip:=IntToStr(Ord(Host.h_addr^[i-1]));
ShowMessage('分段IP地址为:'+Ip);
if i<4 then
Ipstr := Ipstr + Ip + '.'
else
Edit1.Text:=Ipstr+Ip;
end;
end;
WSACleanup;
end;
end.
...全文
171 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
muroachanf 2006-12-05
  • 打赏
  • 举报
回复
WSAstartup初始化winsocket
GetHostName取得主机名
GetHostByName通过主机名取得ip地址
inet_ntop可以直接转为主机序的字符串形式,这段代码自己算的,我懒得解释啦,解释起来又是一堆理论,贴个相关的东西给你。


使用这个东西,首先要包含2个头文件:
#include <netdb.h>
#include <sys/socket.h>

struct hostent *gethostbyname(const char *name);
这个函数的传入值是域名或者主机名,例如"www.google.com","wpc"等等。
传出值,是一个hostent的结构(如下)。如果函数调用失败,将返回NULL。

struct hostent {
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
};
解释一下这个结构:
其中,
char *h_name 表示的是主机的规范名。例如www.google.com的规范名其实是www.l.google.com。
char **h_aliases 表示的是主机的别名。www.google.com就是google他自己的别名。有的时候,有的主机可能有好几个别名,这些,其实都是为了易于用户记忆而为自己的网站多取的名字。
int h_addrtype 表示的是主机ip地址的类型,到底是ipv4(AF_INET),还是ipv6(AF_INET6)
int h_length 表示的是主机ip地址的长度
int **h_addr_lisst 表示的是主机的ip地址,注意,这个是以网络字节序存储的。千万不要直接用printf带%s参数来打这个东西,会有问题的哇。所以到真正需要打印出这个IP的话,需要调用inet_ntop()。

const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt) :
这个函数,是将类型为af的网络地址结构src,转换成主机序的字符串形式,存放在长度为cnt的字符串中。
这个函数,其实就是返回指向dst的一个指针。如果函数调用错误,返回值是NULL。

Ass_Of_Gril 2006-12-05
  • 打赏
  • 举报
回复
不用谢给我分就可以;


============================================================
人生最高境界:睡觉睡到自然醒-舒服啊~数钱数到手抽筋-钱多哈
~人生最低境界:睡觉睡到手抽筋-生病啦!数钱数到自然醒-做梦
呢!
============================================================
dyny 2006-12-05
  • 打赏
  • 举报
回复
“每一句的意思”,呵呵
jiangshi99 2006-12-05
  • 打赏
  • 举报
回复
顶了~~~~~~~~~~~~~~~~~~~~
longzhutuzi 2006-12-05
  • 打赏
  • 举报
回复
谢了!!!!!!!!!!!!
wuyuchang 2006-12-04
  • 打赏
  • 举报
回复
我能帮你!
DURON800 2006-12-04
  • 打赏
  • 举报
回复
关注,呵呵。
gaominjie 2006-12-04
  • 打赏
  • 举报
回复
顶~~

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧