Minggu, 08 Mei 2016

Kupas Tuntas Tentang TCP Redirecting Pada Indy Server

www.indoblog.me - Admin akan menuliskan sebuah artikel Kupas Tuntas Tentang TCP Redirecting Pada Indy Server sebenarnya pembahasan masalah TCP/IP Redireting sudah lama sering dibahas, artikel dan tulisan ini hanya ditujukan untuk sebuah pelajaran bagi yang ingin belajar menjadi programmer jaringan sehingga pelajaran sederhana ini bisa menjadikan sebuah pelajaran percodingan yang berharga untuk anda semuanya, sebelumnya juga sudah dibahas dengan simPATI Your Everyday Discoveries ok next tutorial saja.

Pembahasan Tentang TCP/IP Redirect Dengan Delphi


1. Pengenalan Indy Server

Artikel dan tulisan ini menjelaskan tentang cara membuat protokol TCP redirect dengan Bantuan Delphi yang menggunakan komponen Indy TCP dan Tujuan utama dari pembahasan ini adalah untuk menunjukkan bagaimana cara menerima koneksi client server serta bagaimana mengatur lokal dan meneruskan koneksi server yang lebih jauh lagi.

Sumber tulisan utama diambil dari sebuah artikel Kim Sandell yang dikeluarkan pada tahun 2002 dan telah admin terjemahkan dengan varian dan beragam delphi terbaru, dan yang perlu anda ingat adalah bahwa setiap penulisan coding pada versi delphi itu berbeda beda misal delphi 7 dengan delphi 8 itu ada perbedaannya.

Tulisan ini dibuat secara gratis dan bisa dipelajari oleh siapa saja, tetapi semua resiko penyalah gunaan pelajaran ini sepenuhnya tanggung jawab pembaca.

2. Menuliskan Indy Server

Ok dan dalam rangka untuk menulis sebuah server kita perlu memiliki varian serta aplikasi baru di delphi yang pertama anda bisa menggunakan komponen IdTCPServer atau IdMappedPortTCP kemudian jangan lupa tambahkan 2 komponen button untuk pengujiannya sebagai forwardingnya.

Kemudian anda juga harus memfungsikan event handler untuk koneksi client yang masuk serta anda juga harus menuliskan default portnya dalam pengujian ini kita akan menggunakan port 80 sebagai default portnya.

Mari kita coba dengan IdTCPServer silahkan onclick button1 dan button2 lalu masukan kode dibawah ini , dibawah ini contoh kode lengkapnya.

procedure TForm1.btn1Click(Sender: TObject);
begin
IdTCPServer1.Active := True; // Perintah menjalankan koneksi
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
IdTCPServer1.Active := False; // Perintah menghentikan koneksi
end;

Kemudian silahkan masuk ke event handler untuk event OnExecute dari IdTCPServer1

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
// Kode Program akan kita inputkan disini atau akan kita tuliskan disini
end;

3. Metode Dasar Menuliskan Server OnExecute

Server OnExecute merupakan sebuah event di mana klien terhubung ke Parameter "AThread" ON=Dalam, Exe= Perintah eksekusi, Cute=memotong jadi OnExecute adalah perintah untuk memotong koneksi server, dan anda juga dituntun untuk melakukan eksperimen dengan objek AThread. berikut kode dasar yang akan kita pelajari:

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin // Perintah untuk memulai
 try // perintah untuk mencoba koneksi
  try
   finally // Koneksi ditemukan
   end; // Koneksi berakhir
  except // Pengecualian koneksi
 end;
end;

Apapun bentuk coding yang akan anda inputkan dan akan anda masukan maka harus memlalui proses try terlebih dahulu.

4. Metode Dasar Dalam menuliskan Koneksi Client

implementation

uses IdTCPClient; // ini adalah cara menuliskan koneksi client

{$R *.dfm}

Dan TcpClient juga menggunakan variabel yang harus dinyatakan dalam metode OnExecute , contohnya adalah jika anda ingin menambahkan sebuah function yang terhubung ke rediretingnya maka perintah tersebut harus anda load di onexecute.

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  Cli: TIdTCPClient;
begin
  try
    Cli := nil;
    try
      { Buat Koneksi dan Coba Hubungkan ke Server }
      Cli := TIdTCPClient.Create(nil);
      Cli.Host := 'www.google.com';
      Cli.Port := 80;
    finally
      if Assigned(Cli) then
      begin
        Cli.Disconnect;
        Cli.Free;
      end;
      { Memutuskan koneksi client }
      AThread.Connection.Disconnect;
    end;
  except
  end;

  end;

dan untuk menghubungkan ke www.google.com anda bisa menambahkan baris:

try
 { Buat Koneksi dan Coba Hubungkan ke Server }
 Cli := TIdTCPClient.Create(nil);
 Cli.Host := 'www.google.com';
 Cli.Port := 80;
 { Menghubungkan koneksi ke server remote }
 Cli.Connect;
finally

5. Data Forwarding Client Server

Kita akan belajar menuliskan kode program data forwarding yang sudah kita tuliskan diatas, dan selama koneksi loop terjaga tetapi jika loop tidak dapat bertahan kita juga bisa menggunakan pewaktuan sleep agar loop tetap terjaga, dan pastikan juga bahwa koneksi loop tidak mengambil CPU yang berlebihan dan overload.

Berikut adalah contoh coding handlernya untuk OnExecute Pada Indy Server:

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  Cli: TIdTCPClient;
  Len: Cardinal;
  Data: string;
begin
  try
    Cli := nil;
    try
      { Buat Koneksi dan Coba Hubungkan ke Server }
      Cli := TIdTCPClient.Create(nil);
      Cli.Host := 'www.google.com';
      Cli.Port := 80;
      { Menghubungkan koneksi ke server remote }
      Cli.Connect;
      {Baca / Tulis lingkaran}
      repeat
        {Baca data dari Client}
        {Tanda komentar garis bawah, tergantung pada Anda Versi INDY}
        // <9: If AThread.Connection.CurrentReadBufferSize>0 then
        // >9: If Lenght(AThread.Connection.CurrentReadBuffer)>0 then
        begin
          Len := AThread.Connection.CurrentReadBufferSize;
          Data := AThread.Connection.ReadString(Len);
          {Menulis ke Server}
          Cli.Write(Data);
        end;
        {Baca data dari Server}
        if Cli.CurrentReadBufferSize > 0 then
        begin
          Len := Cli.CurrentReadBufferSize;
          Data := Cli.ReadString(Len);
          {Menulis ke Server}
          AThread.Connection.Write(Data);
        end;
       {Periksa Koneksi Putus}
        Cli.CheckForDisconnect(False);
        Cli.CheckForGracefulDisconnect(False);
        AThread.Connection.CheckForDisconnect(False);
        AThread.Connection.CheckForGracefulDisconnect(False);
      {Sistem Rilis Ukuran Data}
        SleepEx(1, True);
      until (not AThread.Connection.Connected) or (not Cli.Connected);
    finally
      if Assigned(Cli) then
      begin
        Cli.Disconnect;
        Cli.Free
      end;
   { Memutuskan koneksi client }
      AThread.Connection.Disconnect;
    end;
  except
  end;
end;

6. Pengujian Aplikasi

Sekarang anda coba akses browser via http://localhost atau http://127.0.0.1 harusnya diarakan ke www.google.com tetapi dengan catatan bahwa browser sedang tidak terpengaruh oleh server proxy.

catatan bahwa server proxy adalah pintu awal yang memberikan hak akses terhadap www.google.com apakah seorang klient berhak mengakses situs tersebut atau tidak, oleh karena itu , itu adalah istilahnya throug proxy server.

Proxy server berkemungkinan besar untuk memblokir sebuah host contohnya www.google.com hanya saja proxy server juga bisa memberikan hak akses klient pada path pada host yang diblokir tersebut.

7. Cara Lain yang bisa anda tempuh dengan modulasi diatas adalah:

Anda bisa mengatur properti MappedHost dan MappedPort ke salah satu server yang Anda ingin anda lalu lintas arus datanya anda lewati dan serta anda juga bisa mengatur properti DefaultPort ke port yang anda inginkan serta anda juga bisa mengatur interface ip address ke MappedHost yang anda inginkan, dll.

Ok guys hanya itu saja dulu informasi yang bisa disampaikan tentang Kupas Tuntas Tentang TCP Redirecting Pada Indy Server Terbaru 2016 semoga anda bisa menjadi generasi penerus programmer yang akan datang. good luck and happy coding.

Free Download: Advance Driver Update Pro Full Version 2016