已知计算机名称(用户名)求出IP地址 ( 积分: 200 )

  • 主题发起人 主题发起人 fecbchenhua
  • 开始时间 开始时间
F

fecbchenhua

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手,请问在已知计算机名称(用户名)的情况下,如何求出IP地址?不知道难否?因为我不懂,所以感到难。请高手赐教,不胜感谢!
 
各位高手,请问在已知计算机名称(用户名)的情况下,如何求出IP地址?不知道难否?因为我不懂,所以感到难。请高手赐教,不胜感谢!
 
开始菜单——》运行——输入 “ping 你要查询的计算机名称”

是不是这样?
 
http://www.cnblogs.com/bonny.wong/articles/98994.html
 
http://www.cnblogs.com/bonny.wong/articles/92223.html
 
怡.梦 (2004-03-13 15:39:41)
由计算机名称得到IP地
procedure TForm1.Button1Click(Sender: TObject);
var
WSAData: TWSAData;
HostEnt: PHostEnt;
sComputerName, sIP: string;
begin
sComputername:=edit1.text;
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;
edit2.text:=sIP;
end;
end.


sfwany (2004-03-13 15:40:02)
function tform1.ipaddrtoname(ipaddr:string):string;
var
sockaddrin:tsockaddrin;
hostent:phostent;
wsadata:twsadata;
begin
wsastartup($101,wsadata);
sockaddrin.sin_addr.S_addr:=inet_addr(pchar(ipaddr));
hostent:=gethostbyaddr(@sockaddrin.sin_addr.s_addr,4,af_inet);
if hostent<>nil then
begin
result:=strpas(hostent^.h_name);
end
else
begin
result:='';
end;
end;

///
function tform1.getipfromname(name:string):string;
var
wsadata:twsadata;
hostent:phostent;
begin
wsastartup(2,wsadata);
hostent:=gethostbyname(pchar(name));
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])]);
wsacleanup;
end;

 
好象很简单
 
现在的一台机器可能有多个IP地址,我也是吃够了苦头。
看看吧。
function TForm1.GetIPAddres(HostName: string): TStrings;
var
R: Integer;
WSAData: TWSAData;
HostEnt: PHostEnt;
Host: string;
sl: TStringList;
pptr: PaPInAddr;
i: integer;
begin
//Result := '';
sl := TStringList.Create;
R := WSAStartup(MakeWord(1, 1), WSAData);
if R = 0 then
try
Host := HostName;
if Host = '' then
begin
SetLength(Host, MAX_PATH);
GetHostName(PChar(Host), MAX_PATH);
end;
HostEnt := GetHostByName(PChar(Host));
if HostEnt <> nil then
begin
pptr := PaPInAddr(HostEnt^.h_addr_list);
i := 0;
while pptr <> nil do
begin
sl.Add(strpas(inet_ntoa(pptr^)));
inc(i);
end;
end;
finally
WSACleanup;
end;
Result := sl;
end;
 
如app2001和jennykiller所说。
 
谢谢app2001、jennykiller及给予答复的各位高手,但分数有限,只给前两位。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
873
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部