Get Ip Address! lazarus / 9-Editor ---------------------------------------------------------------------- orktes · 2005-03-13 20:37 How can I make my program to get the ip address of the machine. [In delphi it was] Code: [Select] function getIPs: Tstrings; 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 := TstringList.Create;   Result.Clear;   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.Add(inet_ntoa(pptr^[I]^));     Inc(I);   end;   WSACleanup; end; ---------------------------------------------------------------------- mikiwoz · 2005-03-18 22:40 I'd suggest Synapse, although it may be a little overshot, if you are onle looking for the IP. But you can always look at Synapse's code and find it there. http://www.ararat.cz/synapse/ ---------------------------------------------------------------------- bitbow · 2015-05-13 15:55 Hi, this function get public ip. Code: [Select]Function GetIpPub:String; var   IdGetIP: TFPHTTPClient;   Html : String; const   gUrlIpA= 'http://dynupdate.no-ip.com/ip.php';   gUrlIpB= 'http://www.networksecuritytoolkit.org/nst/tools/ip.php'; begin   try   IdGetIP:=TFPHTTPClient.Create(nil);   Result := '';   try     Html := IdGetIP.Get(gUrlIpA);   except     Html := IdGetIP.Get(gUrlIpB);   end;   Result := html;   finally     IdGetIP.Free;   end; end; procedure TForm1.Button1Click(Sender: TObject); begin   ShowMessage(GetIpPub); end; ---------------------------------------------------------------------- dietmar · 2015-05-13 20:17 Hi, I am not sure whether you want to rely on this, since it involes a "foreign source" (which you don't know) that can be unavailable sometimes, and you can't trust it. I must admit that the most solutions here will reveal the private router IP address as "public ip", if you test it, so that's also not that good. But I personally would not trust a foreign source. One solution might be to implement your own PHP script, if you own a private root server or whatever, so you can trust it. Dietmar ---------------------------------------------------------------------- rasberryrabbit · 2015-05-13 23:48 I found this somewhere in internet. Code: [Select]procedure GetIPAddr(var buf: array of char; const len: longint); const  CN_GDNS_ADDR = '127.0.0.1';  CN_GDNS_PORT = 53; var  s: string;  sock: longint;  err: longint;  HostAddr: TSockAddr;  l: Integer;  IPAddr: TInetSockAddr; begin  err := 0;  Assert(len >= 16);  sock := fpsocket(AF_INET, SOCK_DGRAM, 0);  assert(sock <> -1);  IPAddr.sin_family := AF_INET;  IPAddr.sin_port := htons(CN_GDNS_PORT);  IPAddr.sin_addr.s_addr := StrToHostAddr(CN_GDNS_ADDR).s_addr;  if (fpConnect(sock,@IPAddr,SizeOf(IPAddr)) = 0) then  begin    try      l := SizeOf(HostAddr);      if (fpgetsockname(sock, @HostAddr, @l) = 0) then      begin        s := NetAddrToStr(HostAddr.sin_addr);        StrPCopy(PChar(Buf), s);      end      else      begin        err:=socketError;      end;    finally      if (CloseSocket(sock) <> 0) then      begin        err := socketError;      end;    end;  end  else  begin    err:=socketError;  end; end; ---------------------------------------------------------------------- eny · 2015-05-14 14:52 Quote from: bitbow on May 13, 2015, 05:55:01 pmBumping a 10 year old thread??????  Posting the same code as here??? http://forum.lazarus.freepascal.org/index.php/topic,4519.msg177771.htm l#msg177771