1. Laporan pemrograman visual
Aplikasi Chatting (server-client)
Menggunakan windows socket dengan bahasa c++
Disusun oleh :
Fenty tri hidayati
09091003058
(www.blog.unsri.ac.id/fenty)
2. FAKULTAS ILMU KOMPUTER
JURUSAN SISTEM INFORMASI
UNIVERSITAS SRIWIJAYA
TAHUN AJARAN 2010-2011
BAB I
PENDAHULUAN
1.1 Pendahuluan
C++ builder adalah sebuah aplikasi yang digunakan untuk pengembangan
dengan memanfaatkan keistimewaan konsep-konsep antar muka grafis dalam
Microsoft Windows. Aplikasi yang dihasilkan C++ builder berkait erat dengan
Windows itu sendiri sehingga dibutuhkan pengetahuan bagaimana cara kerja dari
windows.
Seperti layaknya bahasa pemrograman yang berobjek Visual lainnya C++
Builder ini mempunyai kelebihan antara lain digolongkan ke dalam kelompok
RAD(Rapid Application Development), yang merupakan perangkat pemrograman
yang mampu membuat aplikasi dengan mudah dan cepat. C++ Builder juga
tergolong kelompok bahasa pemrograman yang menggunakan prinsip Even Driven.
Keunggulan lainnya dari C++ Builder ini adalah dalam pengembangan Database
dalam pemrograman database ini, terutama program yang sangat sederhana
sekali, Anda sudah dapat menjalankan program tersebut tanpa harus menuliskan
sebaris kode.
Dalam Pemrograman Visual banyak istilah dan konsep untuk menyebut
“sesuatu” yang membentuk sebuah aplikasi. Istilah-istilah tersebut memiliki arti
yang sama dalam lingkungan Pemrograman Visual yang lain, misalnya objek,
properti, dan event.
3. Untuk itu dengan keistimewaan borland C++ builder ini, dibangun la sebuah
aplikasi chatting (server-client) dengan menggunakan komponen windows socket.
Windows socket yang berfungsi sebagai jembatan untuk software aplikasi yang
berhuubungan dengan network service terutama TCP/IP pada sistem operasi
windows. Socket juga memungkinkan terjadinya pertukaran data antar program
atau proses baik dalam satu mesin atau antar mesin.
Maksud dan Tujuan
1. Memberikan informasi mengenai coding aplikasi chatting menggunakan
komponen windows socket di borland C++ builder.
2. Mengetahui bagaimana menghubungkan server socket dengan client
socket dalam aplikasi chatting di borland C++ builder.
4. BAB II
PEMBAHASAN
Membuat Aplikasi Chatting (Server-Client) dengan menggunakan
windows socket di Borland C++ Builder
5. Pada pembuatan aplikasi chatting yang menggunakan jaringan internet
(TCP/IP atau UDP) , intranet atau LAN ada dua aplikasi di dalamnya, yaitu :
1. Server Application
2. Client Application
Aplikasi chatting ini menggunakan komponen windows socket. Socket adalah
salah satu komponen Borland C++ Builder dan merupakan jembatan yang bisa
memungkinkan terjadinya komunikasi di dalam jaringan komputer dengan kata
lain bisa disebut sebagai middleware. Socket biasanya digunakan untuk
membangun aplikasi terdistribusi.
Winsocks atau windows socket sebenarnya merupakan kepanjangan dari
windows socket API (Application Programming Interface) yang berfungsi sebagai
jembatan untuk software aplikasi yang berhuubungan dengan network service
terutama TCP/IP pada sistem operasi windows. Socket juga memungkinkan
terjadinya pertukaran data antar program atau proses baik dalam satu mesin
atau antar mesin.
Pemrograman Jaringan modern sekarang ini berbasis pada model
client/server. Pada sebagian besar kasus, server biasanya mengirim data,
sedangkan client menerimanya. Pembahasan tentang model Client/Server tidak
akan lepas dari konsep sistem terdistribusi. Sebab client/server merupakan
model dasar dari sistem terdistribusi.
Dengan pembagian fungsi untuk tiap komponen dalam suatu sistem,
manfaatnya:
- Berbagi resource
- Berbagi beban kerja
- Tidak membedakan platform
6. - Meningkatkan efisiensi
Ada dua organisasi yang menstandarisasi pemrograman jaringan dan
protocol di internet, yaitu:
- Internet Engineering Task Force (IETF) : TCP/IP, MIME, dan SMTP
- World Wide Web Consortium (W3C) : HTTP, HTML, XHTML, MathML, dan
XML
Dokumen-dokument IETF dipublikasikan sebagai Internet drafts dan
requests for comments (RFCs). RFCs and Internet drafts berasal dari
informational dokumen dari keinginan umum sampai spesifikasi detail dari
Internet protokol seperti HTTP.
Dokumen RFCs dipublikasikan jika disetujui oleh Internet Engineering
Steering Group (IESG) dari IETF. Semua dokumen standar IETF yang disetujui
adalah RFCs, tetapi tidak semua RFCs adalah standar IETF. RFCs banyak
terdapat di Internet, misalnya http://www.faqs.org/rfc/ dan
http://www.ietf.org/rfc.html
ARSITEKTUR CLIENT-SERVER
Client/Server dapat diartikan sebagai kemampuan komputer untuk meminta
layanan request data kepada komputer lain. Komputer yang meminta layanan
disebut sebagai client, sedangkan yang menyediakan layanan disebut sebagai
server.
7. Pengertian lain, client melakukan permintaan suatu informasi atau mengirim
perintah ke server. Server akan menerima permintaan dan perintah client.
Kemudian server akan memproses memproses berdasarkan permintaan tersebut,
dan mengembalikan kepada client sebagai hasil pemrosesan yang sudah dilakukan.
Service Request Services Response
Client – Middleware Server –
PHP, JSP,ASP Apache, IIS
Web
Data Request
Database: MySQL,
Oracle
Arsitektur Model Client/Server
Service Request adalah permintaan dari client baik berupa permintaan data
maupun perintah ke server.
Service Response berupa balasan dari server atas permintaan dari client berupa
hasil proses.
Data yang diminta oleh client dapat diambil dari database pada sisi server yang
sering disebut database server, seperi misalnya MySQL, PostgreSQL, Oracle,
atau SQL Server.
Karakteristik Client-Server:
Client dan Server merupakan item proses (logika) terpisah yang bekerja
sama pada suatu jaringan komputer untuk mengerjakan suatu tugas
Service : Menyediakan layanan terpisah yang berbeda
8. Shared resource : Server dapat melayani beberapa client pada saat yang
sama dan mengatur pengaksesan resource
Asymmetrical Protocol : antara client dan server merupakan hubungan
one-to-many. Client memulai komunikasi dengan mengirim request ke
server. Server menunggu permintaan dari client. Kondisi tersebut juga
memungkinkan komunikasi callback.
Transparency Location : proses server dapat ditempatkan pada mesin
yang sama atau terpisah dengan proses client. Client/server akan
menyembunyikan lokasi server dari client.
Mix-and-match : tidak tergantung pada platform
Message-based-exchange : antara client dan server berkomunikasi
dengan mekanisme pertukaran message.
Encapsulation of service : message memberitahu server apa yang akan
dikerjakan
Scalability : sistem C/S dapat dimekarkan baik vertikal maupun horisontal
Integrity : kode dan data server diatur secara terpusat, sedangkan pada
client tetap pada komputer tersendiri
MIDDLEWARE
Software yang berfungsi sebagai lapisan konversi atau penerjemah. Juga sebagai
konsolidator dan integrator. Middleware saat ini dikembangkan untuk
memungkinkan satu aplikasi berkomunikasi dengan lainnya walaupun berjalan pada
platform yang berbeda.
ARSITEKTUR SOFTWARE
9. - Data, menyediakan struktur dan fungsi untuk manipulasi informasi, yang
terdiri dari banyak objek data. Sebagai contoh : relational Database, file
grafik, file suara atau multimedia data stream
- Processing, terfokus pada pemrosesan objek data, yang biasanya disebut
sebagai middleware.
- Presentation, terfokus untuk membuat data tersedia untuk user dan
menangani interaksi dengan user. Ada dua level :
User interface
Presentation management, menyediakan operasi dasar untuk
membangun dan mengontrol user interface di bawah kontrol
aplikasi. Meliputi : layanan tampilan, kontrol dialog dan API. Contoh :
X-Windows, MS Windows
Tahapan dan Screenshot dari aplikasi chatting (server-client)
Adapun langkah pertama yang harus Anda siapkan dalam membuat aplikasi
chatting (server-client) di borland C++ builder adalah buat sebuah form yang
tampak di dalam gambar 1.1.
10. Letakkan komponen Server Socket (ServerSoc), dua Button (ada BtnConnect
dan BtnSend), textfield (ada dua yaitu untuk txtPort dan txtSend), dan yang
terakhir memo(memo1)
SERVER
Gambar 1.1 tampilan form server
Pada komponen Server Socket terdapat dua buah event, yaitu event
onconnect dan event onread.
Masukkan kode TForm1::ServerSocConnect(TObject *Sender,
void __fastcall program berikut pada event onconnect:
TCustomWinSocket *Socket)
1. Event OnConnect
{
AnsiString temp;
temp=Socket->RemoteAddress;
int i;
for(i=0;i<serverSoc->Socket->ActiveConnections;i++)
{
ServerSoc->Socket->Connections[i]->SendText(temp+"Connected");
}
Memo1->Lines->Add(temp+" Connected");
}
11. Pada event OnClientConnect, dideklarasikan 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. Saat Server berhasil terhubung ke
Client maka pada Memo1 Server Side akan muncul tulisan “Connected”.
Selanjutnnya masukkan kode program berikut pada event onread :
2. Event OnRead
void __fastcall TForm1::ServerSocRead(TObject *Sender,
TCustomWinSocket *Socket)
{
int i;
AnsiString temp,temp2; //untuk temporarinya
temp=Socket->ReceiveText();
temp2=Socket->RemoteAddress;
for(i=0;i<ServerSoc->Socket->ActiveConnections;i++)
{
ServerSoc->Socket->Connections[i]-
>SendText(temp2+":"+temp);
}
Memo1->Lines->Add(temp2+":"+temp);
Pada}event OnClientRead, dideklarasikan dua buah variabel AnsiString (temp,
temp2). temp=Socket->ReceiveText(); dimana temp berisi pesan yang
diterima Server dari Client.
Untuk Button, terdapat dua buah button yaitu Button Connect dan Button
Send. Masukkan kode program berikut ke dalam tombol Connect:
1. Button Connect
void __fastcall TForm1::BtnConnectClick(TObject *Sender)
{
ServerSoc->Port=StrToInt(txtPort->Text);
ServerSoc->Open();
}
12. Fungsi Button connect disini yaitu untuk mengkoneksikan server socket
dengan client socket.
ServerSoc->Port=StrToInt(txtPort->Text);
(ServerSoc= nama Server Socket yang kita buat sendiri)
txtPort merupakan 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 ServerSoc->Open();( berfungsi untuk mengaktifkan server socket).
Pada tombol Send masukkan kode program berikut :
2. Button Send
void __fastcall TForm1::BtnSendClick(TObject *Sender)
{
for(int i=0;i<ServerSoc->Socket->ActiveConnections;i++)
{
ServerSoc->Socket->Connections[i]->SendText(txtSend-
>Text);
}
Memo1->Lines->Add(txtSend->Text);
}
Fungsi tombol Button Send yaitu untuk Server Socket mengirim pesan
yang diinputkan pada txtSend ke Client.
Langkah selanjutnya,buat tampilan form kedua yang digunkan untuk client
seperti gambar 1.2 di bawah. Letakkan komponen Client Socket (ClientSoc),
13. Button (ada dua button yaitu BtnConnect dan BtnSend),Textfield (ada empat
buah textfield yaitu txtIp,txtPort,txtName,txtMsg), dan terakhir komponen
Memo (Memo1).
2. CLIENT
Gambar 1.2 form Client
Selanjutnya ke bagian pengisian koding. Untuk pembuatan koding hampir sama
dengan pembuatan koding pada Server Socket.
Pada Server Socket juga terdapat dua buah event, yaitu :
1. Event OnConnect
void __fastcall TForm1::ClientSocConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Memo1->Lines->Add("Connected to Server");
}
14. Saat Client berhasil terhubung ke Server maka pada Memo1 Server Side
akan muncul tulisan “Connected”.
2. Event OnRead
void __fastcall TForm1::ClientSocRead(TObject *Sender, TCustomWinSocket
*Socket)
{
Memo1->Lines->Add(Socket->ReceiveText());
}
Fungsi event OnRead yaitu untuk pembacaan pesan yang diterima dari
server.
Untuk Button, terdapat dua buah button yaitu Button connect dan Button
Send. Pada tombol Button Connect masukkan kode program berikut :
3. Button Connect
void __fastcall TForm1::BtnConnectClick(TObject *Sender)
{
ClientSoc->Address=txtip->Text;
ClientSoc->Port=StrToInt(txtport->Text);
ClientSoc->Open(); //mengaktifkan Client Socket
}
• txtIp berisi ip address server yang dituju, dalam kasus ini
digunakan ip address 127.0.0.1 sebagai localhost, karena dalam
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.
15. • txtport berisi port server (portnya harus sama dengan port server
yang Client yang akan dikoneksikan). Ingat Portnya di parsing dulu
ke Integer, karena textfield bertipe String.
Pada tombol Button Send masukkan kode program berikut :
4. Button Send
void __fastcall TForm1::BtnSendClick(TObject *Sender)
{
ClientSoc->Socket->SendText(txtname->Text+”#”+txtmsg->Text);
}
Client Socket mengirim pesan yang diinputkan pada txtmsg ke server.