通过机器名得到IP地址:
function procedure TForm1.nametoip(name:string):string;
var
WSAData: TWSAData;
HostEnt: PHostEnt;
begin
result:='';
WSAStartup(2, WSAData);
HostEnt := gethostbyname(PChar(name));
if HostEnt <> nil then
begin
with HostEnt^ do
result:= Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
end;
WSACleanup;
end;
function procedure TForm1.nametoip(name:string):string;
var
WSAData: TWSAData;
HostEnt: PHostEnt;
begin
result:='';
WSAStartup(2, WSAData);
HostEnt := gethostbyname(PChar(name));
if HostEnt <> nil then
begin
with HostEnt^ do
result:= Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
end;
WSACleanup;
end;
他的localaddress就是本机的IP地址
Psock;function GetLocalIP:string;
var
PSock : TPowersock;
begin
PSock := TPowersock.Create(nil);
try
Result := PSock.LocalIP;
finally
PSock.Free;
end;
end;
调用这个函数,返回值就是本机ip地址。
函数语句WSAStartup(2, WSAData)中的参数WSAData应该为指针类型,但改为WSAStartup(2, ◎WSAData)后,编译提示形参实参类型仍然不符,这是为什么?