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

Layang-layang

Dulu pernah kaubelikan aku sebuah layang-layang pada hari ulang tahun. Aku pun bersorak sebagai kanak-kanak tapi hanya sejenak.