Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Check Internet Connectivity

See more Socket/SSL/TLS Examples

Demonstrates an efficient way to test for Internet connectivity.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Socket;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  socket: TSocket;
  targetIp: string;
  port: Integer;
  ssl: Boolean;
  timeoutMs: Integer;

begin
  success := False;

  socket := TSocket.Create;
  //  1. Use a reliable Anycast IP. 
  //     8.8.8.8 (Google) or 1.1.1.1 (Cloudflare) are the industry standards.
  targetIp := '8.8.8.8';

  //  2. Use Port 53 (DNS). 
  //     DNS servers typically listen on TCP Port 53 as well as UDP. 
  //     (Alternatively, use port 443 if you suspect port 53 is blocked).
  port := 53;

  //  3. Disable SSL (0). 
  //     We are not doing a handshake, just a TCP connection.
  ssl := False;

  //  4. Short Timeout (1500ms).
  //     If you can't reach Google in 1.5 seconds, the connection is 
  //     likely too poor for practical use anyway.
  timeoutMs := 1500;

  //  Connect
  success := socket.Connect(targetIp,port,ssl,timeoutMs);
  if (success = False) then
    begin
      WriteLn(socket.LastErrorText);
      Exit;
    end;

  socket.Close(10);

  WriteLn('We have Internet connectivity.');


  socket.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.