Ok, thanks everyone, it seams that I managed to extract a function from Silvio's code which doesn't use Synapse. I only tested in Windows so far:
unit chesstcputils; {$mode objfpc}{$H+} interface uses {$IFDEF MSWINDOWS} Winsock, {$ENDIF} Classes, SysUtils; function ChessGetLocalIP(): string; implementation const CFormatIPMask = '%d.%d.%d.%d'; function ChessGetLocalIP(): string; var I, VAttempt: Integer; VStrTemp, VSitesToTry: TStringList; {$IFDEF UNIX} VProcess: TProcess; {$ENDIF} {$IFDEF MSWINDOWS} var VWSAData: TWSAData; VHostEnt: PHostEnt; VName: string; {$ENDIF} begin Result := ''; {$IFDEF UNIX} VStrTemp := TStringList.Create; VProcess := TProcess.Create(nil); try VProcess.CommandLine := 'sh -c "ifconfig eth0 | awk ''/inet end/ {print $3}''"'; VProcess.Options := [poWaitOnExit, poUsePipes]; VProcess.Execute; VStrTemp.LoadFromStream(VProcess.Output); Result := Trim(VStrTemp.Text); finally VStrTemp.Free; VProcess.Free; end; {$ENDIF} {$IFDEF MSWINDOWS} {$HINTS OFF} WSAStartup(2, VWSAData); {$HINTS ON} SetLength(VName, 255); GetHostName(PChar(VName), 255); SetLength(VName, StrLen(PChar(VName))); VHostEnt := GetHostByName(PChar(VName)); with VHostEnt^ do Result := Format(CFormatIPMask, [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]); WSACleanup; {$ENDIF} end; end. -- Felipe Monteiro de Carvalho _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal