Minggu, 19 Oktober 2008

Indy sebagai socket programming pada delphi

Socket programming adalah bagaimana cara menggunakan socket API ( Application Socket Programming ), untuk menghubungkan komunikasi antara proses remote dan local , programmer yang menggunakan ILE ( Integrated Language Environment) C dapat menggunakan informasi untuk mengembangkan aplikasi socket . Anda juga dapat menggunakan kode socket API dari bahasa ILE lainnya , seperti RPG . JAVA juga mendukung alat penghubung untuk socket programming

Dan maksud dari API adalah sebuah library atau fungsi windows untuk mengeksekusi sebuah perintah yang ada di dalam semua tampilan windows , sebagai contoh untuk tampilan desktop ,screen saver ,shutdown computer dll

Biasanya seorang programmer yang membuat program seperti berbasiskan protocol jaringan kita sebut dia adalah programmer winsock ( windows socket ).

Winsock dapat didefinisikan dan di dokumentasikan oleh standar API untuk pemograman protocols jaringan . Umumnya digunakan untuk program TCP / IP , tetapi dapat juga digunakan untuk program novell ( IPX / SPX ) dan protocol jaringan lainnya . Winsock dapat digunakan untuk DLL ( Dynamic Link Library ) yang merupakan bagian dari Win32 .

Cara kerja dari winsock adalah perpaduan antara IP Address dan port number , lalu apa yang dimaksud dengan IP Address . IP Address adalah sebuah alamat virtual pada setiap computer untuk mengirimkan data , contoh dalam kehidupan nyata adalah setiap kita mengirim surat kita harus menyertakan alamat pengirim dan alamat tujuan , jika tidak ada maka paket tidak bisa dikirim karena tidak jelas alamat pengirim dan alamat penerima . contoh alamat IP Address adalah 192.168.1.1

Lalu yang dimaksud dengan port number ,pada pelayanan jaringan di computer , port number dapat dikatakan sebagai identifikasi khusus untuk setiap proses, contoh jika anda menggunakan layanan internet seperti google .com anda telah menggunakan port number tertentu , yaitu port 80

Jadi windows socket adalah perpaduan IP Address dan port number , contoh anda mengakses http://www.google.com , kita misalkan google.com memiliki IP Address 66.25.12.25 , sama saja anda mengakses dengan http://www.google.com:80 atau http://66.25.12.25:80 atau untuk layanan chatting seperti MIRC menggunakan port :6666 jadi cara kerja untuk mengakses MIRC adalah alamatserver:portnumber contoh kita anggap IP Address untuk alamatserver chating misalkan DALNET adalah :121.122.204.12 maka prosesnya adalah 121.122.204.12:6666

Kembali ke topic utama kita adalah Indy ( Internet direct ) , indy digunakan untuk membuat aplikasi yang menggunakan protocol jaringan

Indy ( Internet Direct )

Lalu apa indy itu ? indy adalah komponen open source yang terdiri dari protocol internet yang sudah begitu popular ,seperti HTTP , FTP , SMTP , TCP , UDP ,Gopher , Whois dan lain -lain , karena open source maka kita dapat mempelajari semua kode program yang ada untuk dikembangkan . kemudahan yang lain adalah indy mendukung protocol sampai 120 protokol , sebelumya protocol adalah aturan standar atau ketentuan dalam komunikasi jaringan , jadi dalam komunikasi jaringan sudah dibentuk aturan baku dalam proses data .

Untuk pemograman indy dapat menggunakan bahasa pemograman seperti Borland Delphi , Borland C++ builder , Visual Studio.net, C# , dan untuk platform ( berbeda system operasi ) dapat digunakan pula di Linux , .Net Framework, dan Win32.

Untuk selanjutnya penulis akan menjelaskan dengan membuat program telnet sederhana . penulis menggunakan bahasa pemograman Borland Delphi 7 dan komponen indy server ( IdTcpServer ) dan indy client ( IdTcpClient ) , penulis juga menggunakan dua form , yaitu form server dan form client . pertama adalah kita membuat perintah pada Form Client

Aplikasi Client

Pada Aplikasi Client dirancang untuk koneksi ke server , dibawah ini adalah baris untuk koneksi ke server



Procedure Tmain Form.ButtonClick (Sender:TObject );

Begin

With IdtcpClient1 do

Begin
Host:=edit1.text // masukan ip address

Port:= 3122;

connect; end;







Untuk lebih memudahkan , maka pada saat client terhubung dengan server , di buat sebuah pesan ke client , untuk memastikan client terhubung dengan server , kode program tersebut dapat dilihat di bawah ini

Procedure TForm1.TCPClient1Connected(Sender: TObject);

begin

memo1.Lines.Insert(0,'koneksi terhubung ke server ' + edit1.Text);

//sebuah pesan di memo yang menyatakan bahwa client telah //terhubung ke erver

end;


Dari baris diatas dapat dilihat pernyataan “koneksi terhubung ke server ‘ edit1.text menyatakan nama IP Address server .

Kita juga harus menutup koneksi ke server , apabila kita sudah tidak ingin menggunakan program tersebut dan ingin keluar , aplikasi client harus secara otomatis ( istilah computer “ disconnect “) dari server , baris perintah tersebut dapat dilihat pada kode program di bawah ini

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

if tcpclient1.Connected then tcpclient1.Disconnect;

end;


Selanjutnya yang terpenting adalah komunikasi client dengan server , karena aplikasi ini adalah telnet sederhana , maka client hanya dapat mengirim pesan atau data ke server , untuk pengembangan ke hal yang lain seperti gambar ataupun suara dapat mengunjungi situsnya di Http://www.nevrona.com/indy , baris ini adalah pengiriman text dari client ke aplikasi server .


Procedure Tmainform1.Buttonclick(Sender:Tobject );

Var pesan:string;

Begin

IdTcpClient1.Writeln(edit2.text); // pesan berasal dari input user

edit2.text:=’’ // mengkosongkan edit2 supaya dapat di isi kembali

IdTcpClient1.readln(pesan);

memo1.lines.insert(0,pesan);

end;


Aplikasi Server

Setelah membuat aplikasi client ,saatnya di buat aplikasi server , untuk aplikasi server komponen yang diperlukan adalah IdTcpServer , yang digunakan untuk mengaktifkan server yang merupakan perpaduan antaa Ip Address dan port number .

Penulis menggunakan port number 3122 , jadi jika aplikasi ini dijalankan , maka gabungan nya adalah IP Address server dan 3122, contoh IP Address yang digunakan : 127.0.0.1 dan port number yang digunakan 3122 , ini artinya adalah computer dengan alamat : 127.0.0.1 membuka layanan servis telnet dengan port number : 3122

Baris perintah untuk mengaktifkan server , terdapat pada baris dibawah ini

Procedure Tform1.create ( Sender:TObject )

var

Bindings: TIdSocketHandles;

begin

//setup and start TCPServer

Bindings := TIdSocketHandles.Create(TCPServer);

try

with Bindings.Add do

begin

IP := 127.0.0.1;

Port := 3122;

end;

Try IdTCPServer.Bindings := Bindings;

IdTCPServer.Active := True;

except on E:Exception do

ShowMessage(E.Message);

end;

finally

Bindings.Free;

end;

//setup TCPServer


Baris diatas akan mengaktifkan server telnet dengan membuka port 3122 , selanjutnya adalah saat ada koneksi atau hubungan dari client , maka server akan memberikan sebuah pernyataan atau ucapan selamat datang ke client, pernyataan tersebut dapat dibuat sesuka hati . contoh pernyataan selamat datang server .

Procedure TForm1.IdtTpserver1Connect ( Athread :TIdPeerThread )

Begin

With AThread.Connection do

Begin

Writeln (‘ Selamat Datang di Server Ku ‘);

Writeln (‘ Percobaan dengan Komponen Indy ‘);

Writeln(‘ ========================= ‘);

End;


Selanjutnya adalah balasan server ketika ada pesan atau message dari client , untuk memastikan bahwa client mengirimkan data , kode programnya dapat dilihati dibawah ini

Procedure Tform1.IdTcpServerExecute( Athread:TidPeerThread);

Var Pesan:string;

Begin

While Athread.Connection.Connected do

Begin

Pesan:=athread.Connection.readln;

//membaca data yang dikirim oleh Client , disimpan di

//variable pesan

//mengirimkan data ke client

athreaad.connection.writeln( ‘ OK’ + pesan);

end;

end.


6 komentar:

  1. adu rumit juga ya jadi pusing mikirinnya, ada yang mau contoh program delphi 7 kunjungi aja blok berikut http://mawix.blogspot.com/2009/02/belajar-dengan-borland-delphi-7.html dijamin gampang cara bikinnya

    BalasHapus
  2. bukanya contoh di atas masi eror yang tidak di baca (TCPServer), add,
    apakah bisa dijelaskan mbk

    BalasHapus
  3. Sepertinya var bindings : TIdSocketHandles tipenya masih tidak dikenal,Bindings.Add untuk IP sama portnya tidak dikenal, tolong penjelasannya...

    BalasHapus
  4. ia error,,,,,aku sudah buat,, pada saat klik koneksi.....muncul error socket #10060

    BalasHapus
  5. Banyak yang harus disesuaikan/dirapihkan... n ada syntax yang ngejebak juga..(syntaxnya sedikit disempunyikan)..
    .
    aku Coba dah bisa running.. tapi balasan dari server ga keterima di client...
    . sepertinya masih ada yang kurang...
    .
    Over All, Ngasi Infonya ky yg ga Tulus.... :)

    BalasHapus
  6. bang untuk aplikasi Ftp menggunakan indy gmna caranya bang,,
    mohon pencerahannya,,,

    BalasHapus

"Upadi", Semacam Mencari, Semacam Riang

Upadi artinya semacam mencari. Apakah dengan semacam riang kau nanti akan mencari-cari pemahaman dari halaman-halaman buku ini, tapi tak pah...