On 06/10/10 14:27, Felipe Monteiro de Carvalho wrote:
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}''"';
Yuck. This doesn't work on my system (debian). If you really want the
least effort, you may have more luck with simply parsing `hostname -I`
somehow. The right way to do this is with an ioctl, I believe
(SIOCGIFCONF). Look here:
http://www.kernel.org/doc/man-pages/online/pages/man7/netdevice.7.html
I'm sure there's some code floating around, but it probably means that
you have to translate some headers :(.
Henry
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal