网上那个广为流传的贴子好象不能显示出IP啊

解决方案 »

  1.   

    function TPub.NetGetNameByIPAddr(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.   

    刚才那个过程是通过ip取得机器名,测试通过。
    我再试试通过机器名取得ip
      

  3.   

    HostName为计算机名function GetIP(HostName: String): string;
    var
      WSAData:TWSAData;
      HostEnt:PHostEnt;
      LastIP:PInAddr;
      IPList:^PInAddr; 
    begin
      result:=''; 
      if 0=WSAStartup(MAKEWORD(1,1), WSAData) then
      try 
        begin
          HostEnt:=gethostbyname(HostName);
          if HostEnt<>nil then
          begin 
            IPList:=Pointer(HostEnt^.h_addr_list); 
            repeat
              LastIP:=IPList^; 
              INC(IPList);
            until IPList^=nil;
            if LastIP<>nil then
              result:=inet_ntoa(LastIP^); 
          end;
        end;
      finally
        WSACleanup;
      end;end;
      

  4.   

    来迟了
    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;
    -------------------------
       DNS := 计算机名字
        if HostToIP(DNS, IP) then //获取IP地址
          ListComputerIP.Items.Add(DNS + '--->' + IP);
      

  5.   

    是获得别人的IP吧,自己的IP很容易获得的!