怎样根据对方的IP地址获取其机器名?
谢谢指教!!!

解决方案 »

  1.   

    function 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;
    测试时请在在线状态。测试代码:
    var
      Name: string;
    begin
      Name := InputBox('输入对方主机IP', '主机IP地址:', '');
      showmessage(IpAddrToName(Name));end;
    //uses winsock; 通过IP地址得到机器名 
    function  iptoname(ip:string):string; 
    var 
       WSAData:TWSAData; 
       p:PHostEnt; 
       InetAddr:dword; 
    begin 
       result:=''''; 
       WSAStartup(2,  WSAData); 
       InetAddr:=  inet_addr(PChar(IP)); 
       try 
       p:=GetHostByAddr(@InetAddr,  Length(IP),  PF_Inet); 
       if p<> nil then result:=p^.h_name; 
       except 
         result:=''''; 
       end; 
    end;