首页  编辑  

取得本机IP

Tags: /超级猛料/Network.网络通讯/TCP_IP/   Date Created:

]、。·ˉˇ¨〃々—~‖…’”〕〉》」』〗】∶!"'),.:;?]` function LocalIP:string;

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;

========================================

program get_ip;

uses

 winsock,sysutils;

VAR

 ch : ARRAY[1..32] OF Char;

 i : Integer;

 WSData: TWSAData;

 MyHost: PHostEnt;

begin

 IF WSAstartup(2,wsdata)<>0 THEN

   BEGIN

     Writeln('can''t start Winsock: Error ',WSAGetLastError);

     Halt(2);

   END;

 try

   IF getHostName(@ch[1],32)<>0 THEN

     BEGIN

       Writeln('getHostName failed');

       Halt(3);

     END;

 except

   Writeln('getHostName failed');

   halt(3);

 end;

 MyHost:=GetHostByName(@ch[1]);

 IF MyHost=NIL THEN

   BEGIN

     Writeln(GetHostName('+StrPas(@ch[1])+') failed : Error

'+IntToStr(WSAGetLastError));

     Halt(4);

   END

 ELSE

   BEGIN

       Write('address ');

        FOR i:=1 TO 4 DO

           BEGIN

             Write(Ord(MyHost.h_addr^[i-1]));

             IF i<4 THEN

then     write('.')

             ELSE

               writeln;

           END;

  END;

end.

===========================================