知道局域网某机器名,如何得到它的ip,有这样的api吗
如题 问题点数:20、回复次数:2Top
1 楼bxh2dai(希望明天会有些改变)回复于 2004-09-02 14:47:35 得分 10
这是我通过Ip返回机器名的代码,参树IPAddr要取机器名的IP,成功后,填充值MacName
你修改一下这个代码,就OK了
function GetNameByIPAddr(IPAddr : String;var MacName:String): Boolean;
var
SockAddrIn: TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
Result := False;
if IpAddr = '' then exit;
try
WSAStartup(2, WSAData);
SockAddrIn.sin_addr.s_addr := inet_addr(PChar(IPAddr));
HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt <> nil then
MacName := StrPas(Hostent^.h_name);
Result := True;
finally
WSACleanup;
end;
end;Top
2 楼kiboisme(蓝色光芒)(www.1284.net/)(软件开发机器人for delphi)回复于 2004-09-02 17:13:22 得分 10
Function GetServerIP(Computername : String ) : String;
var
WSAData: TWSAData;
HostEnt: PHostEnt;
sComputerName, sIP: string;
begin
sComputername:=ComputerName;
WSAStartup(2, WSAData);
HostEnt := gethostbyname(PChar(sComputerName));
if HostEnt <> nil then
begin
with HostEnt^ do
sIP := Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
end;
WSACleanup;
Result := sIP;
end;
Top




