//==============================================================================
//取得客户端‘主机名’‘IP地址’************************************************
//==============================================================================
procedure GetClientInfo(var ClientName, IPAddress: string);
var WSAData: TWSAData;
    HostEnt: PHostEnt;
begin
  {no error checking...}
  WSAStartup(2, WSAData);
  SetLength(ClientName, 255);
  Gethostname(PChar(ClientName), 255);
  SetLength(ClientName, StrLen(PChar(ClientName)));
  HostEnt := GetHostByName(PChar(ClientName));
  with HostEnt^ do IPAddress := Format('%d.%d.%d.%d',[Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
  WSACleanup;
end;

解决方案 »

  1.   

    127.0.0.1就是本机的IP地址,ping 127.0.0.1就是 ping你自己的机器。
      

  2.   

    可以使用gethostbyname这个API来获取IP地址
      

  3.   

    顶楼:
    在uses加入idwinsock后,运行时出现:访问地址00000000被破坏,读00000000错误。要怎么才能使用?
      

  4.   

    先uses winsock单元/////得到计算机名字函数////
    function GetName: string;
    const
      MAX = MAX_COMPUTERNAME_LENGTH;
    var
      Computer: array[0..MAX]of Char;
      Size: DWORD;
      Str : String;
    begin
      Size := MAX;
      FillChar(Computer, MAX, 0);
      GetComputerName(Computer, Size);
      Str := Computer;
      Result := Str;
    end;/////得到计算机IP地址函数////
    function GetIp: string;
    var
      wVersion: Word;
       sData: TWSAData;
           P: PHostEnt;
           S: array[0..128]of char;
    begin
      wVersion := MakeWord(1,1);
      WSAStartup(wVersion,sData);
      try
        gethostname(@S,128);
        P := gethostbyname(@S);
        Result := inet_ntoa(PinAddr(P^.h_addr_list^)^);
      finally
        WSACleanup;
      end;
    end;