http://expert.csdn.net/Topic/45492.shtm

解决方案 »

  1.   

    这是一个不断被提起的问题,直接贴出来得了!function LocalIP: String;
    //取得本机IP地址
    type
       TaPInAddr = array [0..10] of PInAddr;
       PaPInAddr = ^TaPInAddr;
    var
       phe: PHostEnt;
       pptr: PaPInAddr;
       Buffer : array [0..63] of char;
       I: Integer;
       GInitData: TWSADATA;
    begin
       WSAStartup($101, GInitData);
       Result := '';
       GetHostName(Buffer, SizeOf(Buffer));
       phe :=GetHostByName(buffer);
       if phe = nil then Exit;
       pptr := PaPInAddr(Phe^.h_addr_list);
       I := 0;
       while pptr^[I] <> nil do
          begin
             result:=StrPas(inet_ntoa(pptr^[I]^));
             Inc(I);
          end;
       WSACleanup;
    end;