Aplikasi Chatting dengan Borland C++ Builder (Client Side)

10 02 2009

Sesuai dengan yang telah saya katakan kemarin, hari ini saya akan membahas bagaimana membuat aplikasi chat sederhana untuk Client Side nya. Sebagai Lanjutan dari aplikasi Server Side yang kemarin dibuat.

Untuk persiapan nya, teman-teman siapkan desain Interface seperti gambar dibawah ini :

client

Objek-Objek yang penting yang terdapat pada desain interface diatas antara lain :
- 1 Client Socket (cs)
- 2 button (btSend,btConnect)
- 4 textfield (txtip,txtport,txtname,txtmsg)
- 1 Memo (Memo1)
Seperti yang saya pernah katakan sebelumnya, objek lainnya dapat ditambahkan sendiri sesuai keinginan teman-teman.

ok,,, lanjut ke bagian pengisian codding…

Pada Client Socket terdapat dua event
1. event Onconnect, yang isinya :
//—————————————————————————
void __fastcall TForm1::csConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add(“Connected to Server”);
}
//—————————————————————————

event OnConnect digunakan terhubung ke server. Saat Client berhasil terhubung ke server maka pada Memo1 Client Side akan ditambahkan kalimat “Connected to Server”.

2. event OnRead
//—————————————————————————
void __fastcall TForm1::csRead(TObject *Sender, TCustomWinSocket *Socket)
{
Memo1->Lines->Add(Socket->ReceiveText());
}
//—————————————————————————

event OnRead digunakan untuk pembacaan pesan yang diterima dari server.

Untuk Button :
1. Button Connect

//—————————————————————————
void __fastcall TForm1::btConnectClick(TObject *Sender)
{
cs->Address=txtip->Text;
cs->Port=StrToInt(txtport->Text);
cs->Open();  //mengaktifkan Client Socket
}
//—————————————————————————

keterangan :

txtip == berisi ip address server yang dituju,,, dalam kasus ini digunakan ip address 127.0.0.1 sebagai localhost, karena saya membuat dan mencoba aplikasi chat ini pada sebuah komputer yang sama(Server dan Client nya berada pada komputer yang sama). Namun jika server nya berada pada komputer yang lain, maka ip address nya disesuaikan dengan ip address komputer dimana server diletakan.

txtport == berisi port server (portnya harus sama dengan port server yang Client mau Konek). Ingat Portnya di parsing dulu ke Integer, karena textfield bertipe String.

2. Button Send
//—————————————————————————
void __fastcall TForm1::btSendClick(TObject *Sender)
{
cs->Socket->SendText(txtname->Text+”#”+txtmsg->Text);
}
//—————————————————————————

Client Socket mengirim pesan yang diinputkan pada txtmsg ke server.

Jangan lupa memperhatikan penamaan dari tiap objek. Karena Borland bersifat case sensitif. Setelah semua penggalan codding diatas diisi sesuai pada tempatnya, maka anda telah berhasil membuat Client Side untuk aplikasi chat sederhana. Silahkan mencoba.,…. Aktifkan dulu server nya dengan menekan tombol START, setelah itu baru jalankan aplikasi Client dan Klik Connect untuk koneksi ke server. Maka Server Side dan Client Side telah berhasil berkomunikasi, dengan bantuan Socket sebagai perantaranya.

Perhatikan pada kedua aplikasi terdapat Socket Server pada server side dan Client Socket pada Client Side. Kedua Socket inilah yang berperan penting dalam proses komunikasi antar Client dan Server. Mengenai Socket telah dibahas pada tulisan-tulisan sebelumnya….

Good Luck ^____^V

–t47a–





Aplikasi Chatting dengan Borland C++ Builder (Server Side)

9 02 2009

Salah satu contoh penerapan Socket dalam aplikasi adalah Aplikasi Chatting (Server dan Client).

Chatting dua arah antara Client dan Server.
Di sini akan dibangun aplikasi Chat Sederhana dengan mempergunakan bahasa pemrograman Borland C++ Builder.

Yang perlu di persiapkan antara lain :
* Tentu saja master “Borland C++ Builder” penulis menggunakan Borland C++ Builder 6 untuk membangun aplikasi saat ini.

* Desaign interface untuk Server di desain seperti gambar di bawah ini

server

Pada desain di atas terdapat
- 1 server socket
- 2 button (send dan start)
- 2 textfield
- 1 Memo

objek lainnya dapat ditambahkan sendiri,,,objek-objek yang saya sebutkan diatas merupakan objek penting yang berkaitan dengan codding program.

Pada Server Socket terdapat tiga event :
1. event OnClientConnect, yg isinya

//—————————————————————————
void __fastcall TForm1::ssClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString temp;
temp=Socket->RemoteAddress;
int i;
for(i=0;i<ss->Socket->ActiveConnections;i++)
{
ss->Socket->Connections[i]->SendText(temp+”Terhubung”);
}
Memo1->Lines->Add(temp+” Terhubung !!!”);
}
}
//—————————————————————————

Jadi, pada event OnClientConnect, dideklaasikan sebuah variabel temp dengan tipe AnsiString, variabel ini kemudian diberi nilai Socket->RemoteAddress; yang merupakan alamat IP (IP Address) dari tiap client yang akan terhubung ke server ini.

2. event OnClientRead
//—————————————————————————
void __fastcall TForm1::ssClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
int i;
AnsiString temp,temp2; //untuk temporarinya
temp=Socket->ReceiveText();
temp2=Socket->RemoteAddress;
for(i=0;iSocket->ActiveConnections;i++)
{
ss->Socket->Connections[i]->SendText(temp2+”:”+temp);
}
Memo1->Lines->Add(temp2+”:”+temp);
}
//—————————————————————————

Sedangkan pada event OnClientRead, dideklarasikan dua buah variabel AnsiString (temp, temp2). temp=Socket->ReceiveText();  // temp berisi pesan yang diterima server dari client
temp2=Socket->RemoteAddress; //temp2 berisi ip address dari client

3. event OnListen
//—————————————————————————
void __fastcall TForm1::ssListen(TObject *Sender, TCustomWinSocket *Socket)
{
Memo1->Lines->Add(“Server Ready!!!”);//artinya di memo ditambahkan pada memo saat server listen karena onlisten
}
//—————————————————————————

untuk button Start event Onclick, masukan codding berikut :

void __fastcall TForm1::btStartClick(TObject *Sender)
{
ss->Port=StrToInt(txtPort->Text);
ss->Open();
}

==================================
keterangan :
ss->Port=StrToInt(txtPort->Text);
ss= nama Server Socket yang kita buat sendiri,
txtPort = nama textfield yang berisi port dari server yang aktif,

syntax Port=StrToInt(txtPort->Text); dilakukan karena port berupa angka sedangkan textfield berupa string sehingga nilainya harus di parsing dari string ke integer.

syntax ss->Open(); // mengaktifkan server socket

Sementara untuk button Send, masukan penggalan codding berikut :

void __fastcall TForm1::btSendClick(TObject *Sender)
{
for(int i=0;i<ss->Socket->ActiveConnections;i++){
ss->Socket->Connections[i]->SendText(txtSend->Text);
}

Memo1->Lines->Add(txtSend->Text);
}

button send digunakan untuk mengirim pesan yang diisi pada txtfield dalam kasus ini testfieldnya bernama ‘txtSend’,  dari server ke client.

setelah semua siap maka anda telah berhasil membuat aplikasi chat untuk server (server side)

Nb : perhatikan nama dari tiap objek yang ada pada aplikasi yang anda ciptakan. Nama objek bisa saja berbeda tergantung dari penamaan anda…!!!

Aplikasi diatas belum dapat difungsikan dengan baik, sebelum aplikasi Client diciptakan.
Untuk aplikasi Client akan di Jelaskan kemudian…

Selamat Mencoba..!!!
^___________^V

–t47a–





Socket Part 2

9 02 2009

Winsock atau windows socket sebenarnya kepanjangan dari Windows Sockets API (aplication progaming interface ) yang befungsi sebagai jembatan untuk software aplikasi yang berhubungan dengan network service terutama TCP/IP pada sistem operasi Windows.
Socket merupakan mekanisme komunikasi yang memungkinkan terjadinya pertukaran data antar program atau proses baik dalam satu mesin maupun antar mesin. Pada setiap lingkungan sistem operasi yang mampu berkomunikasi dengan protokol TCP/IP, fasilitas socket selalu tersedia.

Socket adalah satu titik akhir dari jalur komunikasi dua arah antara dua program yang berjalan pada jaringan dengan protokol TCP/IP atau UDP. Socket terhubung pada sebuah nomor port sehingga lapisan TCP dapat mengidentifikasi sebuah aplikasi dimana pengiriman data ditujukan.

socket-api

Defenisi tentang socket sebagai berikut (Dharma Oetomo, dkk , 2006)
a. Mengizinkan suatu proses unik untuk berkomunikasi satu dengan yang lain
b. Memberitahukan proses mana untuk menulis dan membaca
c. Komunikasi pada mesin yang sama, jaringan dan internet
d. Komunikasi dua arah membuatnya cocok untuk model client server
e. Dibentuk tahun 1980 oleh Barkeley Unix Distribution

Pada umumnya, sebuah server merupakan sebuah komputer yang khusus dan memiliki sebuah socket yang terhubung pada sebuah nomor port yang khusus. Server hanya menunggu socket untuk menerima permintaan koneksi(request) dari sebuah client(passive open). Client mengetahui alamat IP server dan nomor port tempat tersebut dihubungkan. Untuk membuat koneksi permintaan, client mencoba untuk melakukan koneksi dengan server pada mesin server dan port(active open).

Client meminta Koneksi

Apabila semuanya berjalan dengan baik maka server menerima koneksi. Saat penerimaan, server membuka socket baru yang terhubung pada port yang berbeda. Untuk dapat melanjutkan penerimaan dari socket awal untuk koneksi permintaan saat melayani kebutuhan client yang terhubung, dibutuhkan sebuah socket baru dengan nomor port yang beda.

koneksi

Pada sisi client, jika koneksi diterima, sebuah socket berhasil dibentuk dan client dapat menggunakan socket tersebut untuk berkomunikasi dengan server. Client dan server sekarang dapat berkomunikasi untuk menulis atau membaca dari socket tersebut.

cukup sekian untuk hari ini,, ^________^V





Socket

7 02 2009

Just to remind…

Socket merupakan jembatan yang bisa memungkinkan terjadinya komunikasi dalam jaringan komputer, dengan kata lain bisa disebut middleware. Socket biasanya digunakan untuk membangun aplikasi terdistribusi.

Terdapat dua tipe umum socket yaitu Stream Socket yang based ‘Connection Oriented’ dan Datagram Socket yang based ‘Connectionless’.

Disebut Connection Oriented, karena untuk melakukan komunikasi akan dilakukan koneksi terlebih dahulu. Seperti contohnya dalam kasus real, saat kita hendak bertamu kita akan menelepon si pemilik rumah terlebih dahulu untuk memastikan apakah si pemilik rumah ada atau tidak. Jadi kita akan mengecek dulu keberadaan destination kita.. Sama hal nya dengan Conection Oriented, sebelum adanya pengiriman paket, transfer data maupun komunikasi lainnya akan dilakukan koneksi ke destination dulu sehingga dapat ‘reliable’ (menjamin paket sampai ke komputer tujuan dengan selamat).

Mengapa saya bilang paketnya sampai dengan selamat???
karena Stream socket akan melakukan pengecekan, sehingga apabila ada data yang hilang atau rusak, paket data tersebut akan terus diminta sampai diterima dalam kondisi utuh.

Sebagai catatan, paket data di kirim dalam bentuk segment bit per bit. Paket datanya dipecah-pecah dan diberi nomor(urutannya). Jadi saat paket data sampai di tujuan, paket tersebut akan diurutkan sesuai urutannya.

Stream socket menggunakan protokol TCP/IP(Transmission Control Protoco/Internet Protokoll).
Disingkat dengan TCP/IP. Protokol yang terdiri dari sub-protokol, yang beroperasi pada lapisan yang berbeda. Merupakan standar protokol internet. Protokol ini memberikan nomor unik pada setiap komputer yang terkoneksi. Satu set protokol standar yang digunakan untuk menghubungkan jaringan komputer dan mengalamati lalu lintas dalam jaringan. Protokol ini mengatur format data yang diijinkan, penanganan kesalahan (error handling), lalu lintas pesan, dan standar komunikasi lainnya. TCP/IP harus dapat bekerja diatas segala jenis komputer, tanpa terpengaruh oleh perbedaan perangkat keras maupun sistem operasi yang digunakan.

Berbeda dengan Stream Socket, Datagram Socket menggunakan protokol UDP(User Datagram Protokol). UDP adalah protokol yang bersifat connectionlessserta unreliable. UDP merujuk kepada paket data yang tidak menyediakan keterangan mengenai alamat asalnya saat paket data tersebut diterima.

Bagaimana dengan protokol..??
Protokol merupakan kumpulan dari beberapa aturan yang berhubungan dengan komunikasi data antara beberapa alat komunikasi supaya komunikasi data dapat dilakukan dengan benar. Protocol adalah yang menspesifikasikan secara detail bagaimana komputer berinteraksi, termasuk didalamnya format pesan yang mereka tukar dan bagaimana kesalahan ditangani. Hubungan telekomunikasi mencerminkan banyak aspek dari protokol dalam arti diplomatik, beberapa sinyal diubah dengan mengirim dan menerima perangkat, misalnya, diistilahkan dengan berjabat tangan dan berkenalan. Tiga aspek utama komunikasi yang diperhatikan oleh protokol adalah: bagaimana data direpresentasikan dan dikodekan, bagaimana ditransmisikan, dan bagaimana kesalahan dan kegagalan diketahui dan ditangani.

Ingat juga bahwa selain IP Address, socket juga terhubung pada sebuah Port. Apa itu port..??Port merupakan alamat spesifik, mekanisme yang mengizinkan sebuah komputer untuk mendukung beberapa sesi koneksi dengan komputer lainnya dan program di dalam jaringan.
Lebih jelasnya baca –>http://id.wikipedia.org/wiki/Port_TCP_dan_UDP

saya mencoba menulis apa yang bisa saya ingat dan saya pahami…
dan selebihnya anda bisa search sendiri kalo ingin tahu banyak tentang socket dan jaringan komputer ^_^V

kalo ada tambahan monggo…
silahkan…
mari…
yukkk,,,
akan di terima dengan girang Hati…hihihihihihihhhiiii ^^V

–t47a–