怎么利用对方的计算机名来得到计算机名IP 地址? 请各位高手指教.( 给出一点程序代码. 谢谢)

解决方案 »

  1.   

    使用 WinSock 单元;
    过程如下:
    function HostToIP(Name: string; var Ip: string): Boolean;
    var
      wsdata : TWSAData;
      hostName : array [0..255] of char;
      hostEnt : PHostEnt;
      addr : PChar;
    begin
      WSAStartup ($0101, wsdata);
      try
        gethostname (hostName, sizeof (hostName));
        StrPCopy(hostName, Name);
        hostEnt := gethostbyname (hostName);
        if Assigned (hostEnt) then
          if Assigned (hostEnt^.h_addr_list) then begin
            addr := hostEnt^.h_addr_list^;
            if Assigned (addr) then begin
              IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
              byte (addr [1]), byte (addr [2]), byte (addr [3])]);
              Result := True;
            end
            else
              Result := False;
          end
          else
            Result := False
        else begin
          Result := False;
        end;
      finally
        WSACleanup;
      end
    end;
      

  2.   

    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;注意:必须在uses单元里加入winsock.
    测试过是不错!!!!!!!!