LAN Web TCP Delphi

Title: How to get the server (router) and client IP address of your dial up connection ?
Question: There are quite a lot of articles on retrieving IP addresses for LAN interfaces. Here's one for dialup using RAS(Remote Access Services).
Note that it requires header files which are available from Delphi JEDI site
Answer:
Please note that the program uses ras.pas and other header files which are available in the API library of delphi jedi site. The complete project having all the header files is being provided to the webmaster for update.
It displays the server and client IP every second on a label.
unit uMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TfrmMain = class(TForm)
lblIP: TLabel;
tmrUpdate: TTimer;
procedure tmrUpdateTimer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
uses Ras, RasError;
{$R *.DFM}
procedure GetDialUpIpAddress(var server, client: string);
var
RASPppIp: RASIP;
lpcp: DWORD;
ConnClientIP: array[0..RAS_MaxIpAddress] of Char;
ConnServerIP: array[0..RAS_MaxIpAddress] of Char;
Entries: PRasConn;
BufSize, NumberOfEntries, Res: DWORD;
RasConnHandle: THRasConn;
begin
New(Entries);
BufSize := Sizeof(Entries^);
ZeroMemory(Entries, BufSize);
Entries^.dwSize := Sizeof(Entries^);
Res := RasEnumConnections(Entries, BufSize, NumberOfEntries);
if Res = ERROR_BUFFER_TOO_SMALL then
begin
ReallocMem(Entries, BufSize);
ZeroMemory(Entries, BufSize);
Entries^.dwSize := Sizeof(Entries^);
Res := RasEnumConnections(Entries, BufSize, NumberOfEntries);
end;
try
if (Res = 0) and (NumberOfEntries 0) then RasConnHandle := Entries.hrasconn else exit
finally
FreeMem(Entries);
end;
FillChar(RASPppIp, SizeOf(tagRASIP), 0);
RASPppIp.dwSize := SizeOf(tagRASIP);
lpcp := RASPppIp.dwSize;
if RasGetProjectionInfo(RasConnHandle,
RASP_PppIp, @RasPppIp, lpcp) = 0 then
begin
Move(RASPppIp.szServerIpAddress,
ConnServerIP,
SizeOf(ConnServerIP));
Server := ConnServerIP;
Move(RASPppIp.szIpAddress,
ConnClientIP,
SizeOf(ConnClientIP));
client := ConnClientIP;
end;
end;
procedure TfrmMain.tmrUpdateTimer(Sender: TObject);
var
ConnServerIP, ConnClientIP: string;
begin
GetDialUpIpAddress(ConnServerIP, ConnClientIP);
if ConnServerIP = '' then ConnServerIP := 'NA';
if ConnClientIP = '' then ConnClientIP := 'NA';
lblIP.Caption := Format('Server : %s'#13#10'Client : %s', [ConnServerIP, ConnClientIP])
end;