由IP地址得到计算机名称 / 由计算机名称得到IP地址 (100分)

  • 主题发起人 主题发起人 dzl19
  • 开始时间 开始时间
D

dzl19

Unregistered / Unconfirmed
GUEST, unregistred user!
各高手,快快帮忙!
我需要解决两个问题:由IP地址得到计算机名称 / 由计算机名称得到IP地址 ,请问有什么简单的过程吗?
如 function IpChangToName(sIp:string):string; 过程
和 function NamechangToIp(sName:string):string; 过程
紧急!!!!
 
由计算机名称得到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.
 
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;
 
procedure TForm1.Button1Click(Sender: TObject);
var name:string;
begin
name:=inputbox('输入对方主机IP','主机IP地址:','');
showmessage(ipaddrtoname(name));
end;
//
procedure TForm1.Button2Click(Sender: TObject);
var name:string;
begin
name:=inputbox('输入对方计算机名','计算机名','');
showmessage(getipfromname(name));
end;
 
楼上的就行了
 
后退
顶部