最近看到一个程序函数,里面有几处不太明白,特来请教!!!(50分)

  • 主题发起人 lpzst002
  • 开始时间
L

lpzst002

Unregistered / Unconfirmed
GUEST, unregistred user!
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;

TWSAData;//这是什么对象?有什么作用?
WSAStartup ($0101, wsdata);//这是个什么函数?什么作用?
PHostEnt//这是个什么变量?什么作用?
Assigned//这是个什么函数,好像在很多地方见过
WSACleanup;//);//这是个什么函数?什么作用?
 
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); //启动winsock
try
gethostname (hostName, sizeof (hostName)); //获取主机名
StrPCopy(hostName, Name);
hostEnt := gethostbyname (hostName); //从主机名获取主机有关信息
if Assigned (hostEnt) then //如果获取到信息
if Assigned (hostEnt^.h_addr_list) then begin //如果ip地址列表不为空
addr := hostEnt^.h_addr_list^;
if Assigned (addr) then begin //如果ip不为空
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; //关闭winsock
end
end;
 
还有几个问题不太明白,那就是
TWSAData是什么?
Assigned函数是什么作用?
PHostEnt是什么变量?
 
TWSAData:是一个类,封装了WinSocke相关的东西。
建议楼主在代友编辑器中把光标移到那几个字上,按F1,看help吧。什么都有。

这些都是标准的东西,在help中都有的,你找帮助的能力要提高。
 
顶部