如题

解决方案 »

  1.   

    这是我通过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;
      

  2.   

    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;