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

Reply via email to