pengembangan aplikasi remote spesifikasi desktop …
TRANSCRIPT
SKRIPSI
PENGEMBANGAN APLIKASI REMOTE
SPESIFIKASI DESKTOP BERBASIS CLIENT SERVER
Oleh :
Nurul Farhanah
106091002866
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI
SYARIF HIDAYATULLAH
JAKARTA
2011
Teruntuk
Skripsi ini terkhusus penulis persembahkan kepada mereka yang telah
mendukung, baik moril maupun materiil, dalam menyelesaikan skripsi ini.
1. Teteh-tetehku Nunik, Isna, Zakiah, Hayatun, adik-adikku Zaenal, Imad, Ajat, ketiga
kakak iparku Ka’didin, Abang Ozy, A’Jajang serta 4 keponakanku Anindya, Al-
Ghifari, Aiman, Aufa yang telah menjadi tempat penulis melepaskan penat dalam
penyusunan Skripsi ini.
2. Teman-Teman seperjuangan KKN 15 2009, Teknik Informatika UIN 2006, TI-
Network, TI-A 2006 atas dukungan kalian semua.
3. Kepada sahabat-sahabatku yang selalu memotivasi selama ini Finna, Rizka Deti, Ofie,
Mia, Shelvi, Jemi, Atieq, Ferry, Vsank, Qori, Desti, Ulan, Bana, Efa, Tri, Idam.
4. Untuk sahabat kecilku Vivi, Ita, Dini, Danis, Reagy, Yanti, Opick, Dessy, temen SD,
SMP ICM, MAN 2 Bogor, special thanks Mufti Noviar Awal buat waktu dan
tenaganya dan Umay Bin Rohim buat semua support semangatnya.
5. Teman-teman satu dosen Pembimbing yang selalu mensupport dan saling
mendo’akan.
6. Dan untuk seseorang yang kunantikan esok….
PENGESAHAN UJIAN Skripsi yang berjudul “Pengembangan Aplikasi Remote Spesifikasi Desktop Berbasis Client Server”, telah diuji dan dinyatakan lulus dalam Sidang Munaqosah Fakultas Sains dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta, pada hari Senin tanggal 7 Februari 2011 Skripsi ini telah diterima sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada Program Teknik Informatika
Jakarta, Februari 2011
Tim Penguji,
Penguji I Penguji II
Yusuf Durrachman M.Sc, MIT Viva Arifin, MMSI NIP. 197105222006041002 NIP. 19730810 200604 2 001
Tim Pembimbing,
Pembimbing I Pembimbing II
Herlino Nanang, M.T, CCNA Andrew Fiade, M.Kom NIP. 197312092005011002 NIP. 198208112009121004
Mengetahui,
Dekan Ketua Program Studi Fakultas Sains Dan Teknologi Teknik Informatika
DR. Syopiansyah Jaya Putra, M.Sis Yusuf Durrachman M.Sc, MIT NIP. 196801172001121001 NIP. 197105222006041002
iii
PENGEMBANGAN APLIKASI REMOTE SPESIFIKASI
KOMPUTER BERBASIS CLIENT SERVER
Skripsi Sebagai Salah Satu Syarat Untuk Memperoleh Gelar
Sarjana Komputer Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh
Nurul Farhanah
106091002866
Menyetujui,
Pembimbing 2
Andrew Fiade, M.Kom NIP. 198208112009121004
Pembimbing 1
Herlino Nanang, M.T, CCNA NIP. 197312092005011002
Mengetahui, Ketua Program Studi Teknik Informatika
Yusuf Durachman, MSc, M.IT NIP. 197105222006041002
ii
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-
BENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN
SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI
ATAU LEMBAGA MANAPUN.
Jakarta, Februari 2011
Nurul Farhanah 106091002866
iv
ABSTRAK
Nurul Farhanah (106091002866), Pengembangan Aplikasi Remote Spesifikasi
Komputer Berbasis Client Server, Dibimbing oleh Herlino Nanang, M.T, CCNA
dan Andrew Fiade, MKom.
Dalam sebuah jaringan komputer terdapat keinginan untuk mengorganisir
jaringan secara terpusat berbasis client server, mengetahui spesifikasi komputer,
penggunaan cpu, alokasi memori yang digunakan dan hardisk yang tersedia pada
tiap komputer, dan mengendalikan client oleh servernya. Sehingga timbul
masalah bagaimana cara spek komputer client dapat dikirim ke server, bagaimana
mengendalikan komputer client dan memonitoring komputer client dan
diharapkan menghasilkan aplikasi yang membantu dalam penghematan waktu dan
tenaga dalam mengontrol aktivitas user pada jaringan. Maka dibuat aplikasi
sederhana untuk melakukan pengecekan terhadap speksifikasi komputer client,
pengendalian, dan pengawasan terhadap komputer yang berada pada jaringannya
menggunakan bahasa pemrograman Delphi 7.0. Metodologi penelitian yang
digunakan dalam pembuatan aplikasi ini adalah Rapid Aplication Development.
Aplikasi ini dapat berjalan pada system operasi windows.
Kata Kunci : Client Server, Speksifikasi komputer, remote
v
KATA PENGANTAR
Bismillahirrahmannirrahiim………
Segala puji dan syukur penulis panjatkan kepada Allah SWT, Yang Maha
Kuasa dan telah memberikan berkah dan anugerahNya kepada penulis sehingga
penulis mampu melaksanakan tugas untuk menyelesaikan skripsi ini dengan
sebaik-baiknya. Shalawat serta salam tak lupa juga penulis haturkan kepada
junjungan kita Nabi Muhammad SAW.
Skripsi ini penulis buat sebagai syarat kelulusan dalam menempuh
pendidikan jenjang Strata-1 (S1) di Universitas Islam Negeri Syarif Hidayatullah
Jakarta. Selain itu juga penulis berharap apa yang penulis teliti, yang dijelaskan di
dalam skripsi ini, dapat dipergunakan dengan baik oleh semua pihak yang
membutuhkan, sehingga perkembangan ilmu pengetahuan dan teknologi
khususnya di Program Studi Teknik Informatika UIN Syarif Hidayatullah Jakarta
dapat lebih maju dan lulusannya dapat bekerja secara kooperatif dengan semua
elemen informatika dari seluruh dunia.
Pada kesempatan ini, penulis mengucapkan terima kasih kepada pihak-
pihak yang telah membantu penulis menyelesaikan skripsi ini :
1. Bapak Dr. Syopiansyah jaya Putra M.Sis selaku Dekan Fakultas Sains dan
Teknologi.
2. Bapak Yusuf Durrachman M.Sc, MIT selaku ketua Program Studi Teknik
Informatika atas kesempatan untuk dapat melakukan penelitian di
Program Studi Teknik Informatika UIN Jakarta.
vi
vii
3. Herlino Nanang, M.T, CCNA dan Bapak Andrew Fiade,MT yang telah
rela meluangkan waktunya untuk mendukung dan membimbing penulis
dalam menyelesaikan skripsi ini.
4. Bapak dan Ibu penguji yang memberikan kritik dan saran pada skripsi ini.
5. Dosen-Dosen Fakultas Sains dan Teknologi yang telah mengajarkan
kepada penulis berbagai macam ilmu yang dapat penulis terapkan dalam
penulisan skripsi ini.
6. Ayah Tercinta di Surga (Alm) Bapak Nawawi Iskandar dan Ibu Tersayang
RM Muchlishoh, yang telah memberikan dukungan moril, semangat dan
materiil sehingga memperlancar proses penyusunan skripsi ini.
Penulis menyadari masih terdapat banyak kekurangan dalam penelitian ini,
baik penulisan maupun aplikasinya sendiri. Oleh karena itu penulis mengharapkan
saran dan kritik yang dapat membangun skripsi ini lebih baik lagi.
Jakarta, Februari 2011
Penulis
DAFTAR ISI
Halaman
Halaman judul ............................................................................................ i
Persetujuan pembimbing ............................................................................ ii
Halaman pengesahan .................................................................................. iii
Halaman pernyataan ................................................................................... iv
Abstrak ....................................................................................................... v
Kata Pengantar ........................................................................................... vi
Daftar isi...................................................................................................... viii
Daftar gambar ............................................................................................. xii
Daftar tabel ................................................................................................. xiv
Daftar lampiran .......................................................................................... xv
BAB I PENDAHULUAN
1.1. Latar Belakang ............................................................................ 1
1.2. Perumusan Masalah ..................................................................... 2
1.3. Pembatasan Masalah ................................................................... 3
1.4. Tujuan Penelitian ......................................................................... 3
1.5. Manfaat Penelitian ...................................................................... 4
1.6. Metodologi Penelitian .................................................................. 5
1.7. Sistematika Penulisan ................................................................. 7
viii
BAB II LANDASAN TEORI
2.1. Pengembangan ............................................................................ 9
2.2. Aplikasi ....................................................................................... 9
2.3. Client-Server ............................................................................... 10
2.4. Socket Programming ................................................................... 12
2.5. Internet Direct (Indy) .................................................................. 13
2.6. Protokol ....................................................................................... 16
2.6.1 Protokol TCP....................................................................... 18
2.6.2 Protokol UDP...................................................................... 20
2.7. Port Address ................................................................................ 21
2.8. Borland Delphi 7.0 ...................................................................... 22
2.9. Library WinAPI Sistem Windows ............................................... 28
2.10. Unified Modelling Language (UML)........................................... 29
2.11. Metode RAD ................................................................................ 31
2.12. Studi Literature ............................................................................ 32
BAB III METODOLOGI PENELITIAN
3.1. Metode Pengumpulan Data ......................................................... 37
3.1.1. Studi Pustaka.................................................................... 37
3.1.2. Studi literature.................................................................. 37
3.2. Metode Pengembangan Sistem ................................................... 40
3.2.1. Perencanaan Syarat-Syarat .............................................. 41
3.2.2. Perancangan .................................................................... 42
ix
x
3.2.3. Konstruksi ....................................................................... 42
3.2.4. Pelaksanaan ..................................................................... 42
BAB IV PEMBAHASAN
4.1. Fase Perencanaan syarat-syarat.................................................... 45
4.2. Fase Perancangan ........................................................................ 46
4.2.1. Use case Diagram ............................................................ 46
4.2.2. Use case Scenario ........................................................... 48
4.2.3. Sequence Diagram ........................................................... 49
4.2.4. Perancangan User interface ............................................ 51
4.3. Fase Konstruksi............................................................................ 54
4.4. Fase Pengujian ............................................................................ 75
4.4.1. Spesifikasi Komputer ....................................................... 75
4.4.2. Tipe jaringan yang digunakan .......................................... 76
4.4.3. Hasil Pengujian ................................................................. 77
4.4.4. Pengujian Blackbox (Pengujian Mandiri) ........................ 88
BAB V KESIMPULAN DAN SARAN
5.1. Kesimpulan ................................................................................. 90
5.2. Saran ............................................................................................ 91
DAFTAR PUSTAKA
LAMPIRAN-LAMPIRAN
DAFTAR GAMBAR
Halaman
Gambar 2.1 Contoh client server dengan 5 client 1 server................................ 11
Gambar 2.2 Format header TCP......................................................................... 20
Gambar 2.3 Three Way Handshake (sumber Craig Hunt 1992) ......................... 20
Gambar 2.4 Format header UDP ....................................................................... 21
Gambar 3.1 Fase-fase RAD ................................................................................ 41
Gambar 3.2 Fase-fase metodologi RAD ............................................................. 44
Gambar 4.1 Usecase Diagram remote desktop komputer................................... 46
Gambar 4.2 Usecase Koneksi ............................................................................ 47
Gambar 4.3 Usecase ambil data memori client .................................................. 47
Gambar 4.4 Usecase remote desktop dan monitoring client ................................ 47
Gambar 4.5 Usecase Tutup Koneksi .................................................................. 48
Gambar 4.6 Sequence Diagram untuk koneksi .................................................... 50
Gambar 4.7 Sequence Diagram untuk Ambil data hardware client ................... 51
Gambar 4.9 Sequence Diagram untuk monitoring client ................................... 52
Gambar 4.10 Sequence Diagram untuk tutup koneksi ....................................... 53
Gambar 4.11Aplikasi untuk server .................................................................... 54
Gambar 4.12 Aplikasi untuk client .................................................................... 54
Gambar 4.13 Koneksi remote desktop ............................................................... 54
Gambar 4.14 Remote control client ................................................................... 59
Gambar 4.15 Desain form aplikasi client............................................................ 56
Gambar 4.16 Tampilan apabila terjadi tutup koneksi ......................................... 59
xii
xiii
Gambar 4.17 form utama server ....................................................................... 67
Gambar 4.18 Keterangan telah menerima koneksi dari client ............................ 67
Gambar 4.19 Ketika koneksi diputus oleh server ............................................... 69
Gambar 4.20 Tampilan remote control client ..................................................... 72
Gambar 4.21 Tampilan untuk memulai remote control ..................................... 73
Gambar 4.22 Tipe jaringan yang digunakan ....................................................... 76
Gambar 4.23 interface aplikasi client.................................................................. 76
Gambar 4.24 interface aplikasi server ............................................................... 77
Gambar 4.25 interface terkoneksi ....................................................................... 78
Gambar 4.26 Interface terkoneksi pada aplikasi client ....................................... 79
Gambar 4.27 interface ambil data memori client ............................................... 79
Gambar 4.28 interface ambil data memori client1.................................................80
Gambar 4.29 Tampilan spesifikasi komputer client yang terhubung ....................81
Gambar 4.30 Tampilan spesifikasi beberapa komputer client yang terhubung ................ 81
Gambar 4.31 Interface pada saat monitoring client ...............................................82
Gambar 4.32 Tampilan untuk memilih client yang akan di-monitoring................83
Gambar 4.33 Tampilan desktop komputer client yang di-remote..........................83
Gambar 4.34 tampilan menu dalam form remote client ........................................84
Gambar 4.35 tampilan menjalankan aplikasi pada client.......................................84
Gambar 4.36 tampilan tutup koneksi pada server..................................................84
Gambar 4.37 tampilan tutup koneksi pada client...................................................86
DAFTAR TABEL
Halaman
Table 2.1 Jenis-jenis protocol berdasarkan layernya ....................................... 17
Tabel 4.1. Use case Scenario Koneksi............................................................. 49
Tabel 4.2. Use case Scenario ambil data memori client .................................. 49
Tabel 4.3. Use case Scenario Remote desktop dan monitoring client ............. 49
Tabel 4.4. Use case Scenario tutup koneksi ................................................... 50
Tabel 4.5. Spesifikasi komputer untuk pengujian ........................................... 75
Tabel 4.6. Hasil pengujian terhadap aplikasi spesifikasi basis client server .. 89
xiv
BAB I
PENDAHULUAN
1.1 Latar Belakang
Local Area Network biasa disingkat LAN adalah sebuah jaringan
komputer yang hanya mencakup wilayah kecil, seperti jaringan komputer
laboratorium, gedung, kantor, dalam rumah, sekolah atau yang lebih kecil.
Setiap node atau komputer dalam sebuah jaringan LAN mempunyai daya
komputasi sendiri, dimana setiap komputer juga dapat mengakses sumber
daya sesuai dengan hak akses yang telah diatur.
Akses terhadap komputer yang berada dalam satu jaringan dapat
berupa pengaksesan terhadap file ataupun aplikasi. Termasuk pula
pengaksesan dalam spesifikasi komputer yang sedang diakses. Akses terhadap
spesifikasi komputer dalam satu jaringan bisa melalui pengontrolan atau
pengendalian host-host dengan menggunakan aplikasi remote monitoring atau
remote control komputer. Namun, remote monitoring pun memiliki
keterbatasan dalam mengetahui spesifikasi komputer secara langsung.
Jaringan LAN client server adalah suatu sistem jaringan komputer
yang memanfaatkan sebuah server atau beberapa server untuk dijadikan
sebagai pusat pengontrol host atau node lainnya, dan juga server akan
berfungsi sebagai penyedia fasilitas-fasilitas yang diperlukan untuk
host/workstation di dalam suatu jaringan, dan workstation yang bertindak
sebagai client hanya bisa menerima dan menggunakan fasilitas yang
1
2
disediakan oleh server komputer tersebut. Selain fasilitas yang disediakan
server, bisa juga terjadi komunikasi antara client-server melalui chatting baik
itu memakai aplikasi chatting portable ataupun memakai aplikasi chatting
bawaan sistem operasi windows (contoh : net meeting).
Keinginan server untuk dapat mengorganisir jaringan secara terpusat,
mengetahui spesifikasi komputer, penggunaan cpu, alokasi memori yang
digunakan dan hardisk yang tersedia pada tiap komputer, keinginan untuk
dapat berkomunikasi, serta keinginan untuk dapat mengendalikan serta
mengontrol aktifitas client merupakan alasan dibuatnya aplikasi yang dapat
memantau sekaligus mengetahui spesifikasi komputer pada client.
Aplikasi ini merupakan penggabungan dari konsep aplikasi remote
monitoring dan aplikasi pendeteksi spesifikasi komputer yang telah ada
sebelumnya. Dengan adanya aplikasi ini, diharapkan dapat mengefisiensikan
waktu dalam melakukan pengecekan spesifikasi komputer client, sekaligus
dapat memantau serta mengendalikan aktivitas yang sedang dilakukan oleh
client.
Dengan latar belakang masalah tersebut, maka dengan ini penulis
mengajukan judul skripsi : “Pengembangan Aplikasi Remote Spesifikasi
Desktop Berbasis Client Server”.
3
1.2 Perumusan Masalah
Berdasarkan latar belakang permasalahan tersebut, dapat dirumuskan
masalah yang harus dipecahkan yaitu :
1. Bagaimana menampilkan keterangan spesifikasi komputer client
yang di kirim ke komputer server?
2. Bagaimana server dapat me-remote komputer client?
3. Aktivitas remote apa saja yang dapat dilakukan oleh server?
1.3 Pembatasan Masalah
Untuk menghindari meluasnya ruang lingkup yang dibahas pada
penelitian ini, maka diberikan batasan masalah sebagai berikut:
1. Percobaan terhadap aplikasi ini hanya akan dilakukan dalam sebuah
jaringan LAN.
2. Aplikasi ini terbagi 2, yaitu aplikasi client dan aplikasi server.
3. Aplikasi dijalankan dalam sistem operasi Windows.
4. Perangkat lunak yang akan digunakan untuk membangun aplikasi ini
adalah Borland Delphi 7.
5. Antarmuka perangkat lunak akan dikembangkan dalam bahasa Inggris
karena alasan banyaknya istilah asing yang bila dialih-bahasakan ke
bahasa Indonesia akan menimbulkan kerancuan.
6. Methodologi yang digunakan pada penelitian ini adalah Rapid
Aplication Development (RAD).
4
1.4 Tujuan Penelitian
Tujuan yang ingin dicapai oleh penulis dari penelitian ini adalah :
1. Menghasilkan sebuah aplikasi remote LAN yang dapat mengirim data
spesifikasi komputer client yang akan di tampilkan di aplikasi server.
2. Dengan aplikasi ini diharapkan server dapat memantau aktivitas user
melalui remote monitoring client yang merupakan dasar dari
pengembangan aplikasi remote ini.
1.5 Manfaat Penelitian
Manfaat yang didapat dari penelitian ini adalah :
1. Bagi Penulis
a. Mengetahui lebih mendalam tentang remote LAN (tentang
pembuatan, fungsi dan kegunaannya).
b. Menambah pengalaman, memperluas wawasan dalam
mengembangkan potensi diri.
2. Bagi Pengguna
a. Mengefisiensikan waktu untuk mengetahui spesifikasi tiap-tiap
node dalam jaringan LAN.
b. Mengakses komputer client dengan me-remote komputer client
c. Monitoring terhadap komputer client
5
3. Bagi Universitas
a. Dapat menjadi sumbangan karya ilmiah dalam disiplin ilmu
teknologi informasi.
b. Dapat dijadikan sebagai bahan bacaan atau acuan bagi peneliti lain
yang berminat mengkaji permasalahan atau topik yang sama.
1.6 Metodologi Penelitian
1.6.1 Pengumpulan Data
Dalam melakukan pengumpulan data, penulis menggunakan
dua metode, yaitu :
1. Studi Pustaka
Mengumpulkan data dari buku-buku di perpustakaan ataupun dari
internet.
2. Studi Literature
Berdasarkan pengamatan penulis, pada penelitian sebelumnya
terdapat beberapa penelitian yang hampir serupa dengan judul
Pengembangan Aplikasi Remote Spesifikasi Komputer Berbasis
Client Server, yaitu Rancang Bangun Aplikasi Remote untuk
Administrasi LAN. literature aplikasi yang digunakan sebagai
acuan adalah aplikasi remote monitoring. Pada aplikasi ini
sepenuhnya me-remote jaringan LAN, dari aplikasi tersebut maka
peneliti mengembangkan aplikasi remote LAN yang bisa
memberikan informasi tentang memori client secara otomatis.
6
1.6.2 Pengembangan Aplikasi
Dengan mengacu pada latar belakang penelitian, perumusan
dan pembatasan permasalahan, serta tujuan dan manfaat penelitian
yang ada, penulis memutuskan untuk menggunakan model Rapid
Aplication Development (RAD). Secara garis besar, RAD ini terdiri
dari beberapa tahapan, yaitu:
a. Fase Perencanaan Syarat-Syarat
Fase dimana menentukan tujuan dan syarat-syarat
terbentuknya suatu sistem.
b. Fase Perancangan
Fase di mana perancangan proses-proses yang akan terjadi
dalam aplikasi, perancangan basis data dan perancangan
antarmuka.
c. Fase Konstruksi
Pada tahapan ini dilakukan tahap pengkodean terhadap
rancangan-rancangan yang telah didefinisikan.
d. Fase Pelaksanaan
Pada tahap ini dilakukan pengujian terhadap sistem dan
pengenalan terhadap aplikasi.
Model RAD ini sebenarnya hampir sama dengan model
waterfall, bedanya siklus pengembangan yang ditempuh model ini
sangat pendek dengan penerapan teknik yang cepat.
7
1.7 Sistematika Penulisan
Dalam skripsi ini, penulis menjabarkan penelitian “Pengembangan
Aplikasi Remote Spesifikasi Desktop Berbasis Client Server” dalam 5
(lima) bab, yaitu :
BAB I PENDAHULUAN
Bab ini berisi pengantar berupa latar belakang dilakukannya
penelitian, perumusan masalah, pembatasan masalah,
tujuan, serta manfaat yang dapat diambil dari penelitian ini.
BAB II LANDASAN TEORI
Bab ini berisi pembahasan teori-teori yang digunakan
sebagai panduan dasar dalam pengembangan sistem ini.
BAB III METODOLOGI PENELITIAN
Bab ini berisi metodologi penelitian yang digunakan serta
langkah-langkah yang digunakan terkait dengan penelitian
yang dilakukan.
BAB IV ANALISIS DAN PERANCANGAN SISTEM
Bab ini berisi hasil pengujian aplikasi yang meliputi
spesifikasi komputer, sistem operasi, bahasa pemograman
dan design jaringan yang digunakan pada saat pengujian
dalam bentuk screen shoot.
8
BAB V KESIMPULAN DAN SARAN
Bab ini merupakan bab penutup yang berisi kesimpulan
serta saran yang dapat membantu pengembangan aplikasi
ini di masa yang akan datang.
BAB II
LANDASAN TEORI
2.1 Pengembangan
Pengembangan adalah kegiatan ilmu pengetahuan dan teknologi
yang bertujuan memanfaatkan kaidah dan teori ilmu pengetahuan yang
telah terbukti kebenarannya untuk meningkatkan fungsi, manfaat, dan
aplikasi ilmu pengetahuan dan teknologi yang telah ada, atau
menghasilkan teknologi baru (Undang-undang Republik Indonesia Nomor
18 Tahun 2002).
Pengembangan dapat juga berarti memperbaiki, menggabungkan,
menambahkan atau menggantikan sistem yang rusak. Pada penelitian ini
pengembangan yang dilakukan adalah mengembangkan aplikasi remote
monitoring dengan menambahkan remote spesifikasi data komputer
berbasis client server.
2.2 Aplikasi
Program aplikasi adalah program siap pakai. Program yang direka
untuk melaksanakan suatu fungsi bagi pengguna atau aplikasi yang lain.
Contoh-contoh aplikasi ialah program pemproses kata dan Web Browser.
Aplikasi akan menggunakan sistem operasi (OS) komputer dan aplikasi
yang lainnya yang mendukung.
9
10
Aplikasi adalah program yang digunakan orang untuk melakukan
sesuatu pada sistem komputer, meskipun aplikasi disertakan sebagai
bagian dari sistem operasi. [wiki.freepascal.2010]
Dari pengertian aplikasi diatas dapat dipahami bahwa ciri dari
aplikasi antara lain siap pakai sehingga pada penelitian ini aplikasi remote
yang diharapkan dapat langsung dipakai dan tentunya mudah dalam
menggunakan atau pemakaian.
2.3 Client- Server
Client-server yaitu jaringan komputer dengan komputer yang
didedikasikan khusus sebagai server. Sebuah service/layanan bisa
diberikan oleh sebuah komputer atau lebih.
Server adalah komputer yang dapat memberikan service ke client,
sedangkan client adalah komputer yang mengakses beberapa service yang
ada di server. Ketika client membutuhkan suatu service yang ada di
server, dia akan mengirim request kepada server lewat jaringan. Jika
request tersebut dapat dilaksanakan, maka server akan mengirim balasan
berupa service yang dibutuhkan untuk saling berhubungan menggunakan
socket.
1. Karakteristik Server
a. Pasif
b. Menunggu request
11
c. Menerima request, memproses mereka dan mengirimkan
balasan berupa service
2. Karakteristik Client
a. Aktif
b. Mengirim request
c. Menunggu dan menerima balasan dari server
Gambar 2.1 Contoh client server dengan 5 client 1 server
Client/Server merupakan teknologi pendistribusian kerja aplikasi
antara dua komputer atau lebih, yang dihubungkan oleh jaringan
komunikasi, dimana yang satu akan bertindak sebagai client atau peminta
layanan, dan yang lainnya sebagai server, atau pemberi layanan. Baik
client ataupun server memiliki pemroses atau CPU sendiri, sedangkan
jaringan yang digunakan bisa berupa jaringan lokal (LAN) ataupun
jaringan yang lebih luas lagi (WAN). [Nurrachyanto, Edy. 2010]
12
Dalam model Client/Server, sebuah aplikasi dibagi menjadi dua
bagian yang terpisah, tapi masih merupakan sebuah kesatuan yakni
komponen client dan komponen server.
2.4 Socket Programming
Socket adalah sebuah endpoint untuk komunikasi didalam jaringan.
Sepasang proses atau thread berkomunikasi dengan membangun sepasang
socket, yang masing-masing proses memilikinya. Socket dibuat dengan
menyambungkan dua buah alamat IP melalui port tertentu. Secara umum
socket digunakan dalam client/server system, dimana sebuah server akan
menunggu client pada port tertentu. Begitu ada client yang menghubungi
server maka server akan menyetujui komunikasi dengan client melalui
socket yang dibangun.
Socket Programming adalah protokol yang mempunyai metode
untuk membuat koneksi antara perangkat dalam jaringan. Terdapat dua
tipe socket yang paling sering digunakan yaitu “Stream Socket” dan
“Datagram Socket” yang lebih dikenal dengan “SOCK_STREAM” and
“SOCK_DGRAM”. Datagram Socket disebut dengan “Connectionless
socket” sedangkan Stream Socket lebih reliable dibandingkan Datagram
Socket karena terciptanya komunikasi dua arah yang memungkinkan
kecilnya data error pada saat transmisi data. [unamedplayer. 2010]
Socket Programming merupakan pemrograman ke arah protocol
jaringan untuk menghubungkan komunikasi antara proses remote dan
13
local. Salah satu library yang digunakan saat menggunakan socket
programming adalah winsock (windows socket). Winsock dapat
didefinisikan dan didokumentasikan oleh standard API (Application
Programming Interface). Socket programming juga untuk mengetahui
bagaimana menggunakan socket API.
Pemograman socket Diantaranya dapat mengimplementasikan
protocol jaringan UDC, HTTP, ICMP, DNS.
2.5 Internet Direct (Indy)
Indy digunakan untuk membuat aplikasi yang menggunakan
protocol jaringan. 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 semua
kode program yang ada dapat dikembangkan kembali. Kemudahan indy
yang lain yaitu mendukung protocol sampai 120 protokol. (pujon online-
www.pherie.my-php.net)
Protokol jaringan adalah software yang digunakan untuk
menghubungkan komputer dalam jaringan supaya dapat saling
berkomunikasi. Protokol terdiri dari aturan-aturan yang dipakai dalam
berkomunikasi. Protokol yang banyak digunakan untuk menghubungkan
komputer dalam jaringan, antara lain ATM, Apple Talk, DCL, Net BEUI,
NWLink IPX/SPX, TCP/IP, dan lain-lain.
14
Komponen internet direct (indy) digunakan untuk aplikasi jaringan
berbasis Client Server. Aplikasi jaringan yang dibuat dengan komponen
indy terhubung dalam sebuah jaringan Local Area Network (LAN),
komponen indy terbagi menjadi dua group utama yaitu indy server dan
indy client dimana indy server ditempatkan pada aplikasi server
sedangkan indy client ditempatkan pada aplikasi client.
Internet langsung (Indy) adalah seperangkat komponen Internet
open source, meliputi hampir semua protokol Internet yang populer.
Ditulis dengan Delphi Indy, yang termasuk dalam Delphi 6, Kylix 1 dan C
+ + Builder 6 dan di atas dalam semua versi lingkungan pengembangan
Borland.
Komponen dalam internet direct atau indy antara lain :
1. IdICMPClient
Internet Control Message Protocol (ICMP) adalah protokol
yang bertugas mengirimkan pesan-pesan kesalahan dan kondisi
lain yang memerlukan perhatian khusus. Pesan atau paket ICMP
dikirim jika terjadi masalah pada layer IP dan layer atasnya
(TCP/UDP).
15
2. TIdIPWatch
Komponen ini digunakan untuk mendapatkan informasi IP
Address yang terdapat dalam komputer yang sedang aktif.
3. Proxy HTTP
Hypertext Transfer Protocol (HTTP) merupakan protokol
komunikasi yang digunakan untuk men-transfer informasi pada
World Wide Web. Fungsi originalnya adalah menyediakan cara
untuk mem-publish dan menerima halaman HTML hypertext.
HTTP merupakan protokol request/response antara client dan
server. Client membuat sebuah HTTP request, seperti web
browser. Server – merupakan komputer yang menyimpan atau
membuat file HTML. Sebuah client HTTP akan menginisialisasi
sebuah request dengan membangun sebuah koneksi TCP ke port
80 (default) , Sebuah Server HTTP akan „mendengarkan‟ port.
Saat menerima request, server akan mengirimkan kembali status
seperti : “(HTTP/1.1 200) OK”, dan sebuah message untuk
dirinya sendiri.
4. Whois
Merupakan sebuah protocol query yang berbasis TCP yang
digunakan untuk melakukan query ke database untuk
menentukan pemilik dari sebuah domain name, alamat IP.
16
Kegunaaan dari data yang diberikan oleh WHOIS (hasil query),
dapat digunakan untuk melakukan validasi untuk Certificate
Authority misalnya untuk registrasi ecommerce dan sebagainya.
5. TIdUdpServer dan TIdUdpClient
UDP (User Datagram Protocol ) merupakan salah satu protokol
lapisan transport TCP/IP yang mendukung komunikasi yang
tidak andal (unreliable), tanpa koneksi (connectionless) antara
host-host dalam jaringan yang menggunakan TCP/IP.
[Andrew fiade.2010]
2.6 Protokol
Protokol adalah sebuah aturan atau standar yang mengatur atau
mengijinkan terjadinya hubungan, komunikasi, dan perpindahan data
antara dua atau lebih titik komputer. Protokol dapat diterapkan pada
perangkat keras, perangkat lunak atau kombinasi dari keduanya. Pada
tingkatan yang terendah, protokol mendefinisikan koneksi perangkat
keras.
Dalam membuat protokol ada tiga hal yang harus dipertimbangkan,
yaitu efektivitas, kehandalan, dan Kemampuan dalam kondisi gagal di
network. Agar protokol dapat dipakai untuk komunikasi diberbagai
pembuat perangkat maka dibutuhkan standarisasi protokol. Banyak
lembaga dunia yang bekerja untuk standarisasi protokol. Yang saat ini
17
banyak mengeluarkan standarisasi protokol yaitu IETF, ETSI, ITU, dan
ANSI. [Wikipedia. 2010]
Macam-macam Protokol berdasarkan layernya sebagai berikut :
Table 2.1 Jenis-jenis protocol berdasarkan layernya
Layer Protokol dan Fungsi
Physical
Layer ETHERNET Berfungsi untuk mendefinisikan media transmisi
jaringan, metode pensinyalan, sinkronisasi bit, arsitektur
jaringan
Data-link
Layer PPP (Point to Point Protocol) mengontrol proses pengiriman
frame dari pengirim ke penerima agar tidak terjadi penumpukan
frame yang menyebabkan hilangnya frame sebelumnya, hal ini
terjadi karena buffer penerima belum mengambil frame yang
harus diterimanya
ETHERNET Berfungsi untuk mendefinisikan media transmisi
jaringan, metode pensinyalan, sinkronisasi bit, arsitektur
jaringan
Network
Layer ICMP (Internet Control Message Protocol) bertugas
mengirimkan pesan-pesan kesalahan dan kondisi lain yang
memperhatikan perhatian khusus
ARP (Address Resolution Protocol) bertugas menemukan
hardware address suatu host dengan alamat IP tertentu
RARP (Reverse Address Resolution Protocol) bertugas
menerjemahkan hardware address menjadi IP address suatu
host.
IP (Internet Protocol) bertugas untuk menyediakan cara terbaik
untuk membawa datagram dari sumber ketujuan, tanpa
memperdulikan apakah mesin yang bersangkutan berada pada
jaringan yang sama atau tidak, atau apakah terdapat jaringan-
jaringan lainnya antara sumber dengan tujuan atau tidak.
Transport
Layer UDP (User Datagram Protocol) Conectionless oriented atau
protocol yang melakukan proses pengiriman data dengan cara
tanpa adanya nomor urut atau pesan acknowledgment
TCP (Transmission Control Protocol) Conection oriented
protocol yang menggaransi tiap pengiriman data, maksudnya
Data yang dikirimkan ke sebuah koneksi TCP akan diurutkan
dengan sebuah nomor urut paket dan akan mengharapkan paket
positive acknowledgment dari penerima. Jika tidak ada paket
Acknowledgment dari penerima, maka segmen TCP (protocol
18
data unit dalam protokol TCP) akan ditransmisikan ulang
Session Layer RPC (Remote Procedure Call) Protocol Berfungsi untuk
mendefinisikan bagaimana koneksi dapat dibuat, dipelihara, atau
dihancurkan
Presentation
Layer XDR (External Data Representation) Protocol Berfungsi untuk
mentranslasikan data yang hendak ditransmisikan oleh aplikasi
ke dalam format yang dapat ditransmisikan melalui jaringan.
Protokol yang berada
VTP Fungsi dari VTP untuk presentation layer adalah :
a. Membuat dan memelihara struktur data
b. Translating karakteristik terminal ke bentuk standard
Application
Layer NIS (Network Information System)
NFS (Network File System) dapat mengizinkan klien-klien
untuk menemukan dan mengakses berkas yang disimpan di
dalam server jaringan jarak jauh
POP3 protokol untuk mengambil surat elektronik dari server.
IMAP sejenis dengan POP3 tetapi memiliki fitur yang lebih
lengkap.
HTTP (Hypertext Transfer Protocol, lebih sering terlihat sebagai
http) adalah protokol yang dipergunakan untuk mentransfer
dokumen dalam World Wide Web (WWW). Protokol ini adalah
protokol ringan, tidak berstatus dan generik yang dapat
dipergunakan berbagai macam tipe dokumen.
2.6.1 Protokol TCP
Transport Control Protokol (TCP) merupakan protokol yang
berada pada layer transport dari layer TCP/IP. TCP adalah protokol
yang bersifat byte stream, connection-oriented dan reliable dalam
pengiriman data. TCP menggunakan komunikasi byte stream artinya
data dinyatakan sebagai suatu urutan byte. connection-oriented
berarti sebelum terjadi proses pertukaran data antar komputer
terlebih dahulu harus dibentuk suatu hubungan. Sebagai contoh
19
analogi adalah proses pendialan nomor telepon dan akhirnya
terbentuk suatu hubungan.
Kehandalan TCP dalam mengirim data didukung oleh
mekanisme yang disebut Positive Acknowledgemenr with Re-
transmission data yang dikirim akan dipecah dalam bagian kecil dan
diberi nomor urut sebelum dikirimkan ke layer berikutnya. TCP
selalu meminta konfirmasi setiap kali selesai mengirimkan data,
apakah sampai tujuan dan tidak rusak. jika berhasil maka akan
dilakukan pengiriman segment berikutnya. jika gagal atau hilang
atau rusak maka akan dilakukan pengiriman ulang. Berikut ini
format header TCP
Gambar 2.2 Format header TCP
Model komunikasi dua arah antara komputer sisi kirim dan sisi
terima sebelum terjadi proses pengiriman data disebut handshake.
tipe handshake yang digunakan dalam TCP adalah Three-way
handshake, karena menggunakan tiga segmen yaitu pembentukan
20
koneksi, sinkronisasi segmen dan pemberitahuan besar data yang
diterima pada saat antara sisi kirim dan sisi terima. Proses sederhana
three way handshake sebagai berikut.
Gambar 2.3 Three Way Handshake (sumber Craig Hunt 1992)
2.6.2 Protokol UDP
User Datagram Protokol (UDP) merupakan protokol yang juga
berada pada layer transport selain TCP. Protokol ini bersifat
connectionless dan unreliable dalam pengiriman data.
connectionless berarti tidak diperlukannya suatu bentuk hubungan
terlebih dahulu untuk mengirimkan data. Unreliable berarti pada
protokol ini data tidak dijamin akan sampai pada tujuan yang benar
dan dalam kondisi yang benar pula. Kehandalan pengiriman data
pada protokol ini menjadi tanggung jawab dari program aplikasi
pada layer diatasnya. Format header UDP sebagai berikut :
21
Gambar 2.4 Format header UDP
Jika dibandingkan dengan TCP, UDP adalah protokol yang
lebih sederhana karena proses yang digunakan lebih sedikit. oleh
karena itu aplikasi yang menggunakan protokol UDP dapat
mengirimkan data tanpa melalui proses koneksi terlebih dahulu.
header yang dimiliki oleh UDP pun lebih kecil. Protokol UDP sering
diimplementasikan untuk aplikasi yang mengarah proses realtime
seperti aplikasi multimedia.
2.7 Port Address
Aplikasi Internet cukup banyak. Agar tidak bentrok satu sama lain
maka masing-masing aplikasi telah di beri jalur khusus yang diberi nama
port. Port dapat dianalogikan dengan “virtual slot” di dalam “stack”
TCP/UDP. Port digunakan untuk memetakan koneksi antara 2 host, antara
layer TCP/UDP dan aplikasi actual yang berjalan pada host.
Port Number merupakan nomor dengan tipe integer yang
digunakan sebagai identifikasi atau layanan dari client yang ingin
melakukan komunikasi.
22
Port diberi nomor 0 s.d 65535. Port dengan range 0-1023 dinamai
“reserved” atau “privileged” port. Artinya port-port di wilayah tersebut
sudah digunakan untuk berbagai aplikasi yang khas, seperti telnet, mail,
web, ftp, dan sebagainya. Sedangkan sisanya(1024 s.d 65535) disebut
sebagai “dynamic” atau “unprivileged” port.
Port 0 s.d 1023 hampir selalu digunakan sebagai port untuk
aplikasi server yang sudah umum. Sebagai contoh, server FTP
menggunakan port 21/20, SMTP menggunakan port 25, HTTP
menggunakan port 80, dan seterusnya. Port dengan range 1024 s.d 65535
biasanya bersifat dinamis. Contohnya, ketika client melakukan koneksi ke
server maka port yang digunakan oleh client adalah port dinamis.
Ketika aplikasi (server) siap untuk menerima request yang datang.
Maka dimulai koneksi ke port number. Ini alasannya beberapa aplikasi
atau protocol digunakan sebagai interchangeably dengan kata port. Ketika
client akan melakukan pembicaraan ke server, maka client harus
mengetahui aplikasi tersebut (IP address) dan port untuk mendengarkan.
2.8 Borland Delphi 7.0
Delphi adalah sebuah bahasa pemrograman dan lingkungan
pengembangan perangkat lunak. Produk ini dikembangkan oleh CodeGear
sebagai divisi pengembangan perangkat lunak milik Embarcadero, divisi
tersebut sebelumnya adalah milik Borland. Bahasa Delphi, atau dikenal
pula sebagai object pascal (pascal dengan ekstensi pemrograman
23
berorientasi objek (PBO/OOP)) pada mulanya ditujukan hanya untuk
Microsoft Windows, namun saat ini telah mampu digunakan untuk
mengembangkan aplikasi untuk Linux dan Microsoft .NET framework
(lihat di bawah). Dengan menggunakan Free Pascal yang merupakan
proyek opensource, bahasa ini dapat pula digunakan untuk membuat
program yang berjalan di sistem operasi Mac OS X dan Windows CE.
Umumnya delphi lebih banyak digunakan untuk pengembangan
aplikasi desktop dan enterprise berbasis database, tapi sebagai perangkat
pengembangan yang bersifat general-purpose ia juga mampu dan
digunakan dalam berbagai jenis proyek pengembangan software.
Delphi menawarkan Rapid Application development (RAD),
dimana pemogram dapat menghasilkan aplikasi dengan cepat pada
lingkungan visual. Programmer banyak bekerja dengan menyusun form,
banyak menggunakan mouse dengan sedikit menggunakan keyboard. saat
dirilis tahun 1995 untuk windows 16-bit. Delphi 2, dirilis setahun
kemudian, mendukung lingkungan windows 32-bit, dan versi c++,
C++Builder, dirilis beberapa tahun kemudian.
Borland Delphi 1
Delphi 1, dirilis pada 1995 untuk 16-bit Windows 3.1 dan
merupakan contoh awal dari apa yang kemudian dikenal sebagai Rapid
Application Development (RAD) tool. Delphi 1 adalah penerus dari Turbo
Pascal dan Borland Pascal. Delphi kode ditulis dalam dialek bahasa
pemrograman Pascal yang dikenal sebagai Object Pascal .
24
Borland Delphi 2
Delphi 2, dirilis pada 1996 , didukung lingkungan 32-bit Windows.
Ini termasuk Delphi 1 dibundel bersama-sama untuk menciptakan 16-bit
Windows 3.1 aplikasi.
Borland Delphi 3
Dirilis pada tahun 1997, memperkenalkan beberapa fitur baru
seperti teknologi code insight, DLL Debugging, template komponen,
komponen DecisionCube dan TeeChart, teknologi WebBroker dan
integrasi dengan COM melalui interface. Delphi 3 dinyatakan sebagai
tools yang sangat komprehensif untuk pengembangan pemrograman visual
dan client/server.
Borland Delphi 4
Dirilis pada tahun 1998, memperkenalkan teknologi docking,
anchoring dan constraining pada komponen. Menambahkan fitur
AppBrowser, array dinamis, method overloading, mendukung Windows
98, peningkatan dukungan OLE dan COM sebagai dukungan tambahan
untuk koneksi database.
Borland Delphi 5
Borland Delphi 5 dirilis pada 1999 .
Kylix
Pada 2001, dirilis Delphi versi Linux, bernama Kylix. Kylix
didasarkan pada kerangka kerja lintas-platform baru CLX, VCL bukan
sebagai Delphi.
25
Borland Delphi 6
Upaya untuk mendukung pengembangan lintas platform Linux dan
Windows maka dibuat alternative dengan merilis Delphi 6 dan
menambahkan support Linux dengan produk Delphi. Delphi 6 termasuk
versi CLX sama seperti (CLX 1) sebagai Kylix versi pertama. Sejak CLX
dibuat sebelum Delphi 6, set fitur yang didasarkan pada VCL 5 yang
menciptakan beberapa kerugian bagi CLX yang tidak memiliki beberapa
fitur dibandingkan dengan VCL 6 dikirimkan dengan Delphi 6.
Borland Delphi 7
Delphi 7, dirilis pada bulan Agustus 2002, menjadi versi standar
yang digunakan oleh pengembang Delphi lebih dari satu versi lain. Ini
adalah salah satu IDE paling sukses yang dibuat oleh Borland karena
stabilitas, kecepatan dan persyaratan perangkat keras rendah dan tetap
aktif digunakan untuk tanggal ini.
Delphi 7 menambahkan dukungan untuk Windows XP Tema, dan
menambahkan lebih banyak dukungan untuk membangun aplikasi Web.
Ini juga merupakan versi terakhir dari Delphi yang dapat digunakan tanpa
aktivasi.
Kebutuhan Sistem Agar delphi versi 7.0 ini dapat dioperasikan
dengan baik anda membutuhkan perangkat keras dan perangkat lunak
dengan spesifikasi tertentu. Delphi memerlukan perangkat keras
(Hardware) dengan ruang hard disk dan memori yang relatif besar untuk
untuk pembuatannya tetapi untuk pemakaiannya/menggunakan hasil file
26
Aplikasinya tidaklah membutuhkan spesifikasi yang besar, tergantung
besar kecilnya program yang kita terapkan pada komputer tersebut,
Spesifikasi minimal yang dibutuhkan antara lain :
Processor pentium 233 MHz atau yang lebih tinggi.
Sistem operasi windows XP, windows 2000 atau windows 98.
Memori membutuhkan RAM 64 MB untuk edisi Architect,
Enterprise, dan propesional, kecuali untuk personal 32 MB
disarankan 128 MB.
Untuk Hard disk minimal size yang kosong sebesar 500
Megabyte.
Mouse,Keybord.dan lain-lain.
Kelebihan Borland Delphi 7.0
Borland delphi 7.0 merupakan pilihan bagi sebagian kalangan
programmer untuk membuat aplikasi. Hal ini disebabkan kelebihan
yang ada pada borland delphi 7.0 berikut ini beberapa kelebihan borlan
delphi 7.0 antara lain :
Berbasis Objek Oriented programming, seperti bagian yang ada
pada program dipandang sebagai suatu objek yang mempunyai
sifat-sifat yang dapat diubah dan diatur, sehingga kita dapat
membuat tampilan sebuah program dengan desain kita sendiri
tanpa harus membuat codding yang panjang.
Suatu file EXE, setelah anda merancang program pada IDE
Delphi akan mengkomplikasinya pada sebuah file executable
27
tunggal. Program yang anda buat dapat langsung didistribusikan
dan dijalankan pada komputer lain tanpa perlu menyertakan file
lain, kecuali file yang beretensi *.exe atau Applikasi tersebut
membutuhkan file lain seperti database, koneksi atau file
pendukung lainnya, ini merupakan kelebihan yang sangat berarti.
Borland delphi 7.0 hadir bersama borland Kylix 3 yang berbasis
Linux, bila ingin berganti flattform dari Windows ke Linux maka
aplikasi yang dibuat di Delphi dapat dijalankan di Kylix 3 yang
dikarenakan kedua produk tersebut merupakan produk
Borland.[Joshua,Adriel Favian. 2010]
Dalam penggunaan Borland Delphi 7.0 untuk perancangan aplikasi
ini diperlukan tambahan beberapa komponen yaitu NMM dan alite skin.
NMM (Network-Integrated Multimedia Middleware) merupakan
opensource. NMM memungkinkan seorang programmer untuk membuat
aplikasi multimedia terdistribusi: lokal dan remote perangkat multimedia
atau komponen perangkat lunak dapat dikontrol secara transparan.
NMM tersedia untuk Linux, Windows, MacOS, serta sistem
operasi lainnya. dapat digunakan sebagai teknologi untuk secara lokal
memungkinkan operasi aplikasi multimedia, tetapi lebih penting untuk
semua jenis sistem multimedia jaringan dan didistribusikan - mulai dari
sistem embedded dan mobile, untuk PC, untuk cluster komputasi skala
besar.
28
Alite alpha skin control merupakan komponen standard dan unik
yang digunakan untuk desain pengembangan aplikasi multimedia.
Komponen ini bersifat open source maka dapat di unduh di
http://www.alphaskins.com/dwnld.php. Kelebihan dari komponen ini
adalah mudah untuk memberikan tampilan yang lebih menarik. Instalasi
kedua komponen ini dapat dilihat pada lampiran
2.9 Library WinAPI Sistem Windows
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.
Antarmuka Pemrograman Aplikasi Windows (berasal dari Bahasa
Inggris: Windows Application Programming Interface), yang sering
disebut sebagai WinAPI atau Windows API adalah sekumpulan antarmuka
pemrograman aplikasi yang dibuat oleh Microsoft dalam inti sistem
operasi Microsoft Windows buatannya. Semua program Windows, kecuali
program konsol, harus berinteraksi dengan Windows API tanpa melihat
dengan bahasa apa ia dibuat.
Hampir pada setiap peluncuran versi baru Windows, Microsoft
memperkenalkan API baru terhadap Windows API. Meskipun demikian,
nama dari panggilan API tersebut tetap dipertahankan dan konsisten antara
satu versi dengan versi yang lainnya, dan perubahan nama pun mungkin
29
dilakukan jika memang terjadi di sana perubahan besar-besaran pada
platform Windows itu sendiri. Microsoft pun kemudian akan mengubah
nama keluarga Win32 API yang digunakan saat ini menjadi Windows API,
dan membuatnya dapat digunakan oleh semua versi API sistem operasi
Windows.[Wikipedia.2009]
2.10 Unified Modelling Language (UML)
UML adalah sebuah "bahasa" yang telah menjadi standar dalam
industri untuk visualisasi, merancang dan mendokumentasikan sistem
piranti lunak. UML menawarkan sebuah standar untuk merancang model
sebuah sistem.
UML berorientasi objek menerapkan banyak level abstraksi, tidak
bergantung proses pengembangan, tidak tergantung pada bahasa dan
teknologi, pemaduan beberapa notasi di beragam metodologi.
UML mendefinisikan diagram-diagram berikut ini :
1. Use case diagram
2. Class diagram
3. Behaviour diagram :
a. statechart diagram
b. activity diagram
4. Interaction diagram :
a. sequence diagram
b. collaboration diagram
5. Component diagram
30
6. Deployment diagram
Kelebihan UML :
1. Dapat merepresentasikan sebuat object di kehidupan dalam
bentuk document analisa.
2. Berorientasi object karena pendekatannya dimulai dari object
oriented programming metode pemrograman saat ini, dimana
sebelumnya metode programming adalah terstrutur & sequential,
sehingga UML lebih jelas menggambarkan apa yang dapat di
analisa dalam OOP.
3. Ada beberapa software yang dapat lansung men-create
source/coding (code generator) tanpa melakukan programming
telebih dahulu asal proses analisa jelas dan sudah dipetakan ke
dalam UML
4. Sebagai bahasa UML digunakan untuk komunikasi, yaitu alat
untuk menangkap pengetahuan (semantik) mengenai suatu
subjek dan mengapresiasikan subjek sebagai suatu komunikasi.
subjek merupakan sistem yang dibahas.
31
2.11 Metode RAD
Pada penelitian ini membatasi metode yang digunakan adalah
Rapid Application Development (RAD). RAD merupakan salah satu
metode pengembangan suatu sistem informasi dengan waktu yang relatif
singkat. Tujuan utama dari semua metode system development adalah
memberikan suatu sistem yang dapat memenuhi harapan dari para
pemakai.
Pada metode ini terdiri dari 4 tahapan yaitu :
a. Fase Perencanaan Syarat-Syarat
Fase dimana menentukan tujuan dan syarat-syarat yang
dibutuhkan untuk memenuhi kebutuhan dalam pengembangan
system.
b. Fase Perancangan
Fase dimana perancangan proses-proses yang akan terjadi dalam
aplikasi, perancangan use case dan perancangan antarmuka.
c. Fase Konstruksi
Pada tahapan ini dilakukan tahap pengkodean terhadap
rancangan-rancangan yang telah didefinisikan.
d. Fase Pelaksanaan
Pada tahap ini dilakukan pengujian terhadap sistem dan
pengenalan terhadap aplikasi.
32
2.12 Studi literature
1. Rancang Bangun Aplikasi Remote untuk Administrasi LAN yang ditulis
oleh Ryan Aniestyo Hermoko, Fathul Wahid, M. Andri Setiawan dari
Universitas Islam Indonesia. Mereka menyempurnakan aplikasi
Pengendali PC Jarak Jauh pada LAN. Pada penelitian ini meremote
semua aktivitas yang dilakukan oleh client.
2. Literature aplikasi yang digunakan sebagai acuan adalah aplikasi remote
monitoring yang digunakan untuk mengendalikan dan memantau aktivitas
komputer client sesuai nomer IP-nya. Selain itu literature aplikasi yang
digunakan adalah aplikasi pendeteksi spesifikasi komputer antara lain PC-
Wizard, CPU-Z, Everest, Speecy, dan juga DX-Diag. Aplikasi-aplikasi
tersebut dapat menampilkan spesifikasi komputer. Kedua literature
aplikasi ini yang menjadi dasar peneliti mengembangkan aplikasi remote
LAN yang dapat mengetahui spesifikasi komputer client yang terhubung
pada server.
3. Net Support Manager merupakan aplikasi yang dapat mengetahui
spesifikasi komputer berbasisclient server. Aplikasi ini menampilkan
beberapa spesifikasi komputer terhadap satu komputer client saja. Peneliti
mengembangkan aplikasi sejenis yang dapat mengetahui spesifikasi semua
komputer client yang terhubung sekaligus dapat memantau dan
mengendalikan client.
33
4. Analisa remote Desktop pada Jaringan LAN di SMK Triguna Jakarta
Selatan oleh Lidia Putri, penulis menganalisa cara kerja remote desktop
pada jaringan. Remote desktop dijalankan untuk host yang akan di remote.
5. Remote Network Monitoring (RMON) MIB dikembangkan oleh IETF
untuk mendukung analisis monitoring dan protokol LAN. difokuskan pada
OSI Layer 1 dan Layer 2 Ethernet dan informasi dalam jaringan Token
Ring. Kemudian dilanjutkan pengembangannya menjadi RMON2 dengan
menambahkan dukungan untuk Jaringan-dan pemantauan Aplikasi-layer.
6. Sistem Monitoring Dan Pengontrolan Server Jarak Jauh Menggunakan
Mobile Phone. Sistem monitoring sebuah sistem jaringan memiliki
peranan yang sangat penting dalam memberikan informasi yang riil dan
terbaru pada suatu jaringan. Dengan adanya sistem monitoring tersebut,
pengelola jaringan dapat mengetahui jika terjadi kepadatan jaringan
(network traffic) yang cukup besar. Perancangan sistem monitoring
menggunakan mobile phone diharapkan bisa memberikan kemudahan bagi
pengelola jaringan untuk dapat mengetahui kepadatan jaringan dari jarak
jauh. Selain dapat memeriksa kondisi pada jaringan, seorang pengelola
jaringan juga dapat melakukan proses pengontrolan seperti memulai ulang
komputer (restart) dan mematikan komputer (shutdown). Kelebihan
aplikasi ini adalah mobile, menggunakan operating system linux.
Kekurangannya adalah pengontrolan tidak diikuti dengan peringatan bisa
berupa aplikasi chatting.
34
7. PC (Personal Computer) Remote Access Menggunakan Ponsel (Telepon
Selular) Pada Jaringan Berbasis Media Bluetooth. Aplikasi PC Remote
Access ini menggunakan media Bluetooth sebagai media transmisi data
antara aplikasi client yang terdapat pada ponsel dengan aplikasi server
yang terdapat pada PC dimana aplikasi client yang terdapat pada ponsel
dapat mengendalikan beberapa fungsi dasar aplikasi pada PC server
dengan aplikasi server didalamnya. Data dikirimkan dari aplikasi client
pada ponsel melalui media bluetooth. Data yang diterima aplikasi server
dari aplikasi client akan diterjemahkan oleh aplikasi server menjadi sebuah
perintah sehingga user dapat mengendalikan PC server melalui aplikasi
client yang terdapat pada perangkat mobile. Kelebihan : Media transmisi
yang digunakan adalah Bluetooth. Kekurangannya terbatas satu merek
/vendor, client dapat me-remote server sedangkan untuk server tidak dapat
me-remote client.
8. Manajemen Jaringan Dengan Memanfaatkan Aplikasi Remote
Administrator (Radmin) Sebagai Maintenance System Di Pt.Wahana Esa
Shambada. Perkembangan teknologi informasi dan komunikasi yang
begitu pesat sejalan dengan kemajuan sistem komputer merupakan
kebutuhan yang penting dalam menunjang efisiensi kerja di segala bidang.
Pada jaringan komputer, efisiensi kerja dapat terganggu karena adanya
masalah (trouble), seperti masalah pada suatu aplikasi yang mengharuskan
aplikasi tersebut di instal ulang. Permasalahan pada jaringan komputer
akan dapat menimbulkan kerugian yang tidak sedikit. Untuk mengatasi
35
masalah (troubleshooting) tersebut maka, salah satu solusi yaitu dengan
menggunakan suatu perangkat lunak yang dapat me-remote / me-
monitoring client dari server. Salah satu perangkat lunak tersebut adalah
Remote Administrator (Radmin). Kelebihan yang dimiliki Radmin yaitu
kemampuan dalam me-remote / me-monitoring komputer client dari server
yang sangat dibutukan oleh technical support karena dapat memudahkan
dalam penanganan terjadinya troubleshooting dari jarak jauh dengan
menggunakan desktop sharing hingga 655336 warna. Kelebihan dari
aplikasi ini server memantau atau me-monitoring semua client. Pada
aplikasi ini belum ada fitur chatting untuk dapat berkomunikasi dengan
client.
9. Sistem RMM (Remote Maintenance Monitoring) Sebagai Alat Bantu
Teknisi Untuk Memantau Kinerja Peralatan NDB Di Bandara Husein
Sastranegara Bandung. Sistem RMM (Remote Maintenance and
Monitoring) adalah suatu sistem yang berbasis client server dimana kedua
komputer tersebut di implementasikan pada dua lokasi yang terpisah
(berjauhan). Komputer server berada dilokasi peralatan NDB dan
komputer client ditempatkan di ruang teknisi di bandara Husein.S.
Aplikasi ini diimplementasikan sebagai pengganti sistem lama yang tidak
efektif dan efisien. Ada empat komponen utama dalam sistem ini yaitu :
rangkaian ADC sebagai pengubah sinyal analog dari NDB ke digital,
komputer server, pengguna yang bertindak sebagai pengelola data pada
komputer client dan ponsel sebagai media komunikasi (gateway)
36
pengganti kabel. Dari hasil pengujian Sistem RMM menunjukan adanya
peningkatan efektivitas dan efisiensi yang cukup signifikan dibandingkan
dengan sistem lama, sehingga dapat disimpulkan bahwa Sistem RMM
mampu membantu baik teknisi sebagai pelaksana dilapangan maupun PT
(Persero) Angkasa Pura II sebagai pengelola fasilitas navigasi udara di
Bandara Husein Sastranegara dalam meningkatkan efisiensi dan efektifitas
operasional perawatan NDB. Kelebihan remote ini ponsel sebagai media
komunikasi (gateway) pengganti kabel sehingga pekerjaan lebih efisien.
Kekurangan dari aplikasi ini membutuhkan device baru untuk komunikasi.
10. Network LookOut Administrator. Memiliki kemampuan untuk mengambil
kendali dari komputer remote dengan mengendalikan mouse dan
keyboard. Anda dapat merekam layar komputer remote bahkan ketika
Anda tidak pemantauan mereka. Selain itu dapat menunjukkan mereka
desktop server, dapat berkomunikasi dengan chatting tetapi belum
dilengkapi dengan pengontrolan. [2011]
37
BAB III
METODOLOGI PENELITIAN
3.1. Metode Pengumpulan Data
3.1.1 Studi Pustaka
Dalam melakukan pengumpulan data, penulis menggunakan
teknik studi pustaka. Pada tahapan pengumpulan data dengan cara studi
pustaka, penulis mencari referensi-referensi yang relevan dengan objek
yang akan diteliti. Pencarian referensi dilakukan di perpustakaan,
maupun secara online melalui internet. Setelah mendapatkan referensi-
referensi yang relevan tersebut, penulis lalu mencari informasi-
informasi yang dibutuhkan dalam penelitian ini dari referensi-referensi
tersebut. Informasi yang didapatkan digunakan dalam penyusunan
landasan teori, metodologi penelitian serta pengembangan aplikasinya
secara langsung. Pustaka-pustaka yang dijadikan acuan dapat dilihat di
Daftar Pustaka.
3.1.2 Studi Literature
Berdasarkan pengamatan penulis, pada penelitian sebelumnya
terdapat beberapa penelitian yang hampir serupa dengan judul
Pengembangan Aplikasi Remote Spesifikasi Komputer Berbasis Client
Server antara lain :
37
38
1. Rancang Bangun Aplikasi Remote untuk Administrasi LAN
yang ditulis oleh Ryan Aniestyo Hermoko, Fathul Wahid, M.
Andri Setiawan dari Universitas Islam Indonesia. Mereka
menyempurnakan aplikasi Pengendali PC Jarak Jauh pada
LAN. Pada penelitian ini meremote semua aktivitas yang
dilakukan oleh client.
2. Literature aplikasi yang digunakan sebagai acuan adalah
aplikasi remote monitoring yang digunakan untuk
mengendalikan dan memantau aktivitas komputer client sesuai
nomer IP-nya. Selain itu literature aplikasi yang digunakan
adalah aplikasi pendeteksi spesifikasi komputer antara lain PC-
Wizard, CPU-Z, Everest, Speecy, dan juga DX-Diag. Aplikasi-
aplikasi tersebut dapat menampilkan spesifikasi komputer.
Kedua literature aplikasi ini yang menjadi dasar peneliti
mengembangkan aplikasi remote LAN yang dapat mengetahui
spesifikasi komputer client yang terhubung pada server.
3. Net Support Manager merupakan aplikasi yang dapat
mengetahui spesifikasi komputer berbasis client server.
Aplikasi ini menampilkan beberapa spesifikasi komputer
terhadap satu komputer client saja. Peneliti mengembangkan
aplikasi sejenis yang dapat mengetahui spesifikasi semua
komputer client yang terhubung sekaligus dapat memantau dan
mengendalikan client.
39
4. Analisa remote Desktop pada Jaringan LAN di SMK Triguna
Jakarta Selatan oleh Lidia Putri, penulis menganalisa cara kerja
remote desktop pada jaringan. Remote desktop dijalankan
untuk host yang akan di remote.
5. Remote Network Monitoring (RMON) MIB dikembangkan
oleh IETF untuk mendukung analisis monitoring dan protokol
LAN.
6. Sistem Monitoring Dan Pengontrolan Server Jarak Jauh
Menggunakan Mobile Phone oleh Antonius Tanawijaya.
Kelebihan aplikasi ini adalah mobile, menggunakan operating
system linux. Kekurangannya adalah pengontrolan tidak diikuti
dengan peringatan bisa berupa aplikasi chatting.
7. PC (Personal Computer) Remote Access Menggunakan Ponsel
(Telepon Selular) Pada Jaringan Berbasis Media Bluetooth
oleh Arie Januar Smaratul Fuad. Kelebihan : Media transmisi
yang digunakan adalah Bluetooth. Kekurangannya terbatas
satu merek /vendor, client dapat me-remote server sedangkan
untuk server tidak dapat me-remote client.
8. Manajemen Jaringan Dengan Memanfaatkan Aplikasi Remote
Administrator (Radmin) Sebagai Maintenance System Di
Pt.Wahana Esa oleh Predi Aferi Hasan. Kelebihan dari aplikasi
ini server memantau atau me-monitoring semua client. Pada
40
aplikasi ini belum ada fitur chatting untuk dapat
berkomunikasi dengan client.
9. Sistem RMM (Remote Maintenance Monitoring) oleh
Supriyanto. Kelebihan remote ini ponsel sebagai media
komunikasi (gateway) pengganti kabel sehingga pekerjaan
lebih efisien. Kekurangan dari aplikasi ini membutuhkan
device baru untuk komunikasi.
10. Network LookOut Administrator. Memiliki kemampuan untuk
mengambil kendali dari komputer remote dengan
mengendalikan mouse dan keyboard. Kelebihannya adalah
dapat menunjukkan mereka desktop server, dapat
berkomunikasi dengan chatting tetapi belum dilengkapi
dengan pengontrolan.
3.2. Metode Pengembangan Sistem
Metode pengembangan sistem yang penulis gunakan dalam
penelitian ini adalah metode Rapid Application Development (RAD).
Pemilihan metode penelitian Rapid Application Development
(RAD) ini dilakukan dengan alasan aplikasi yang akan dikembangkan
merupakan aplikasi yang berskala kecil/menengah, serta terfokus pada
lingkup tertentu. Pemilihan metodologi ini juga dengan alasan bahwa
aplikasi ini tidak membutuhkan proses komputasi yang kompleks.
41
Kelebihan Rapid Application Development adalah :
1. Pengguna dapat memperoleh/menggunakan sistem lebih awal
2. Pengguna dapat merencanakan beberapa tambahan untuk versi
setelahnya
3. Memerlukan biaya yang lebih sedikit dan berkonsentrasi pada
sudut pandang user
4. Menyediakan kemungkinan perubahan secara tepat sesuai
permintaan user
5. Bukan aplikasi dengan komputasi yang komplek dan user
mengetahui pasti area yang harus di miliki aplikasi.
Fase Model pengembangan RAD yang dibuat oleh James Martin
melingkupi fase-fase sebagai berikut (Kendall & Kendall, 2003):
Gambar 3.1 Fase-fase RAD
Tahapan-tahapan yang dilakukan oleh penulis dalam melakukan
penelitian pengembangan aplikasi ini adalah :
3.2.1 Fase Perencanaan Syarat-Syarat
Pada tahap ini dilakukan pengidentifikasian tujuan aplikasi
serta mengidentifikasi syarat-syarat yang ditimbulkan dari tujuan
tersebut.
42
3.2.2 Fase Perancangan
Pada tahap ini dilakukan beberapa tahapan yaitu:
a) Perancangan Sistem
Perancangan proses-proses yang akan terjadi di dalam system
menggunakan diagram UML yakni dengan membuat beberapa
diagram yaitu: Use Case Diagram dan Sequence Diagram.
b) Perancangan Antar Muka Pemakai (User Interface)
Antar muka pemakai memberikan fasilitas komunikasi antar
pemakai dan aplikasi atau sistem, memberikan berbagai
fasilitas informasi dan berbagai keterangan yang bertujuan
untuk membantu mengarahkan alur penelusuran masalah
sampai ditemukan solusi.
3.2.3 Fase Konstruksi
Pada tahapan ini dilakukan pembuatan program terhadap
rancangan yang telah didefinisikan hasil dari perancangan.
Pembuatan program yang dilakukan menggunakan bahasa
pemrograman Borland Delphi 7.0
3.2.4 Fase Pelaksanaan
a) Konfigurasi Client-Server
Mengidentifikasi jenis jaringan dan topologi yang digunakan
kemudian menentukan PC server dan PC client.
b) Pengujian
43
Pada tahapan ini dilakukan pengujian terhadap aplikasi yang
telah dibuat, pada pengujian aplikasi ini peneliti menggunakan
pengujian black-box yaitu suatu pengujian yang berfokus pada
persyaratan fungsional perangkat lunak (Pressman, 2002).
c) Tanggapan User
Meminta tanggapan user terhadap aplikasi ini kemudian
mengevaluasinya.
44
Gambar 3.2 Fase-fase metodologi penelitian dengan pengembangan aplikasi
menggunakan RAD
Aplikasi
Monitoring
Metode
Pengumpulan Data
Tujuan
Membuat Aplikasi
monitoring hardware
Fase Perencanaan
Syarat-syarat
Fase Perancangan
Syarat-syarat :
Borland Delphi 7.0
Analisis
Kebutuhan
Fase Konstruksi
Fase Pelaksanaan
Perancangan Proses
dengan UML
Perancangan Antarmuka
Pembuatan Pengkodean
Konfigurasi Client
Server
Usecase dan squencial
Diagram
Pengujian black box
Metode RAD
Tanggapan User kurang
baik
45
BAB IV
PEMBAHASAN
4.1 Fase Perencanaan syarat-syarat
Dalam fase perencanaan ini ditentukan permasalahan yaitu
keinginan untuk mengorganisir jaringan secara terpusat berbasis client
server, mengetahui spesifikasi komputer, penggunaan cpu, alokasi memori
yang digunakan dan hardisk yang tersedia pada tiap komputer, dan
mengendalikan dan monitoring client oleh servernya.
Syarat-syarat yang dibutuhkan untuk dapat membuat aplikasi
sesuai yang diinginkan diatas, maka yang dibutuhkan adalah pemilihan
bahasa pemograman untuk pembuatan aplikasi yaitu Delphi 7.0, tambahan
library NMM untuk remote control dan alite skin untuk tampilan.
Selain itu, kita menentukan port yang digunakan pada aplikasi ini.
Dalam pembuatan aplikasi ini port yang akan digunakan adalah port
“dynamic” atau “unprivileged” port yaitu Port dengan range 1024 s.d
65535. Pemilihan port ini karena port ini tidak banyak digunakan secara
umum pada jaringan contohnya berbagai aplikasi yang khas, seperti telnet,
mail, web, ftp, dan sebagainya.
45
46
4.2 Fase Perancangan
4.2.1 Use case Diagram
Use Case Diagram digunakan untuk menjelaskan apa yang akan
dilakukan oleh sistem serta aktor-aktor yang akan berhubungan dengan
proses-proses yang ada pada aplikasi. Use case ini diperlukan untuk
kebutuhan dokumentasi dan arah pengembangan selanjutnya. Dibawah
ini adalah use case untuk beberapa aplikasi yang diinginkan.
Gambar 4.1 Use case Diagram untuk Aplikasi remote spesifikasi computer
47
1. Use case Diagram untuk koneksi
Gambar 4.2 Use case Koneksi
2. Use case Diagram untuk ambil data memori client
Gambar 4.3 Use case ambil data memori client
3. Use case Diagram untuk remote desktop dan monitoring client
Gambar 4.4 Use case remote desktop dan monitoring client
48
4. Use case Diagram untuk tutup koneksi
Gambar 4.5 Use case Tutup Koneksi
4.2.2 Use case Scenario
Use case scenario merupakan penjelasan yang lebih terperinci
mengenai masing-masing use case yang terjadi di dalam sistem. Use
case scenario ini terdiri dari:
1. Nama use case adalah nama use case yang akan dideskripsikan.
2. Aktor yang terlibat.
3. Trigger.
4. Precondition yang penting bagi use case untuk memulai.
5. Action.
6. Postcondition yang menjelaskan state dari sistem setelah use
case berakhir.
Setelah menjelaskan use case pada bahasan sebelumnya, maka
berikut ini akan dijelaskan spesifikasi use case yang telah ditentukan.
49
1. Koneksi
Table 4.1 Use case Scenario Koneksi
2. Ambil data memori client
Table 4.2 Use case Scenario ambil data memori client
3. Remote desktop dan monitoring client
Table 4.3 Use case Scenario Remote desktop dan monitoring client
Nama Usecase Koneksi
Aktor yang terlibat Server , Client
Trigger Actor ingin saling terhubung
Pre condition IP address dan port telah terdeteksi
Action Hubungkan
Post condition Terhubung, IP aktif
Nama Use case ambil data memori client
Aktor yang terlibat Server , Client
Trigger Server hendak mengetahui informasi tentang
Client
Pre condition Actor telah saling terkoneksi
Action
Client mengecek spesifikasi dirinya,
Server dapat langsung memanggil informasi
yang telah di tulis oleh Client
Post condition Data dari Client dapat ditampilkan
Nama Usecase Remote desktop dan monitoring
client
Aktor yang terlibat Client, Server
Trigger Server akan me-remote desktop dan
monitoring Client
Pre condition Actor telah saling terkoneksi
Action View full Client
Post condition Menampilkan desktop dari Client
50
4. Tutup Koneksi
Table 4.4 Use case Scenario tutup koneksi
4.2.3 Sequence Diagram
Sequence diagram menggambarkan interaksi antar objek di dalam
dan di sekitar aplikasi. Sequence diagram untuk aplikasi remote
spesifikasi komputer berbasis client server sebagai berikut :
1. Koneksi
Gambar 4.6 Sequence Diagram untuk koneksi
Pada diagram sequence koneksi, telah terdeteksi IP Address
dan port ketika aplikasi berjalan. Kemudian client meminta supaya
Nama Use case Tutup koneksi
Aktor yang terlibat Server , Client
Trigger Salah satu atau kedua actor ingin
memutuskan koneksi
Pre condition Kedua actor telah terhubung
Action Tutup koneksi
Post condition Disconnect, IP tidak aktif
51
dapat terhubung dengan server, maka terjadi proses cek koneksi ke
server. Pengecekan koneksi ini dengan memeriksa port dan IP
yang sama. Analogi koneksi antara client dan server ini seperti
pendialan nomor telepon yang dituju, apabila telah diijinkan untuk
melakukan komunikasi maka terbentuk suatu hubungan.
2. Ambil data spek client
Gambar 4.7 Sequence Diagram untuk Ambil data spek client
Pada diagram sequence ambil data spek client, dimana antara
client dan server telah saling terhubung. Client mengecek
spesifikasi dirinya kemudian server dapat memanggil data-data
tersebut dari client dan hasilnya akan ditampilkan antara lain
sistem operasi, resolusi layar, jenis komputer, nama user,
52
kapasitas memori, directory windows dan sistem32, kecepatan
CPU, BrandID CPU, serta vendor CPU.
3. Remote monitoring client
Gambar 4.8 Sequence Diagram untuk remote desktop client
Diagram sequence untuk remote monitoring client diatas
menggambarkan bahwa antara client dan server saling terkoneksi,
maka server dapat melakukan remote monitoring terhadap client.
Remote desktop dapat mengendalikan client secara penuh dengan
menggunakan mouse dan keyboard server. Setelah client dan
server saling terkoneksi maka server memilih untuk me-
monitoring client sesuai dengan nomer IP yang akan dipantau,
monitoring ini untuk mengawasi aktivitas client.
53
4. Tutup Koneksi
Gambar 4.10 Sequence Diagram untuk tutup koneksi
Diagram sequence diatas menggambarkan urutan tutup koneksi
antara client dan server. Keduanya dapat melakukan pemutusan
koneksi.
54
4.2.4 Perancangan User interface
1. Tampilan aplikasi server
Gambar 4.11 Aplikasi untuk server
2. Tampilan aplikasi client
Gambar 4.12 aplikasi untuk client
3. Tampilan Remote control dan Monitoring
Gambar 4.13 Remote client
Tempat
menampil
kan
spesifikas
i
komputer
berupa
memo
IP address
Port
Koneksi
client Remote Ambil data
client
Tutup Koneksi
Ip address
port
Koneksi ke server
Tempat untuk tampilan remote
conection exit
55
4. Tampilam koneksi remote control client
Gambar 4.14 remote control client
4.3 Fase Konstruksi
Berdasar syarat-syarat kebutuhan dan perancangan untuk
pembuatan aplikasi remote spek basis client server ini, bahasa yang
digunakan adalah Delphi 7.0 dengan tambahan komponen NMM dan Alite
untuk skin atau tampilan. Instalasi komponen dapat dilihat pada lampiran.
Pembuatan aplikasi ini dibagi menjadi 2 bagian yaitu konstruksi
untuk aplikasi server dan untuk aplikasi client. Konsep yang digunakan
untuk menampilkan spek client melalui remote pada aplikasi ini konsep
server menjadi client dan sebaliknya client menjadi server. pada aplikasi
ini server yang lebih aktif, client menunggu request dan server menerima
layanan.
Berikut ini akan membahas proses konstruksi pengkodean pada
form-form yang akan dibangun. Pada aplikasi server dibutuhkan beberapa
form sedangkan pada aplikasi client hanya dibuat satu buah form.
host port
ok cancel
56
Form pada server antara lain adalah form utama yaitu form server,
form remote, dan form koneksi remote, Berikut ini fase konstruksi aplikasi
remote spesifikasi berbasis client server :
1. Form client (untuk aplikasi client)
Tahap pertama adalah membuat desain form client
menggunakan objek-objek yang ada pada komponen pallete seperti
berikut ini :
Gambar 4.15 Desain form aplikasi client
Komponen yang digunakan untuk membuat aplikasi client seperti
tampak pada gambar diatas antara lain : label, button, edit,
IdTCPServer, IdThreadMgr, IdIPWatch, NMMRCserver, untuk
tampilan digunakan skinProvider dan skinManager. Proses pengkodean
terhadap komponen-komponen diatas di bawah ini :
1. Tambahkan kode program untuk button ‟aktifkan‟ sebagai berikut :
procedure TForm1.Button1Click(Sender: TObject);
begin
koneksiserver.koneksiindy;
koneksiserver.nmm ;
end;
57
Button ‟aktifkan‟ berfungsi untuk merequest koneksi
kepada server. Apabila server telah menerima atau menanggapi
request dari client maka akan tampil ”IP Client Aktif” pada aplikasi
client.
Proses koneksi pada aplikasi ini menggunakan indy.
Koneksi client ke server dibuat fungsi baru (tersendiri) pada unit
‟koneksiserver‟. Berikut adalah kode program untuk ‟koneksiindy‟,
yang dipanggil seperti pada procedure diatas.
a. Unit koneksiserver (untuk menghubungkan client dan server)
function koneksiindy:string;
var
ports:integer;
Bindings: TIdSocketHandles;
begin
ports:=strtoint(form1.edit2.Text); // input dari user.
Bindings := TIdSocketHandles.Create(form1.IdTCPServer1);
try
with Bindings.Add do
begin
IP := form1.edit1.Text;
Port := ports;
end;
Try
form1.IdTCPServer1.Bindings := Bindings;
form1.IdTCPServer1.Active := True;
except on E:Exception do
ShowMessage(E.Message);
end;
finally
Bindings.Free;
form1.label4.Caption:=' IP Client Aktif';
end;
end;
58
b. Fungsi nmm (NMM untuk remote control)
Data kode diatas, port yang digunakan telah diinisialisasi dalam
program, nomor port yang digunakan adalah nomor port
“dynamic” atau “unprivileged”.
2. Untuk button ‟tutup koneksi‟ ditambahkan kode program sebagai berikut :
Button ‟tutup koneksi‟ ini digunakan ketika akan memutuskan hubungan
dengan server. Jika koneksi telah terputus maka akan tampil jendela baru
seperti berikut ini :
function nmm:string;
begin
form1.Server.Port:= 3123;
form1.Server.Active:= true;
end;
function koneksipenuh:string;
begin
form1.Server.Port:= strtoint(form1.Edit3.Text);
form1.Server.Active:= true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
try //non aktifkan server
IdTCPServer1.Bindings := Bindings;
IdTCPServer1.Active := false;
Bindings.Free;
except on E:Exception do
ShowMessage('koneksi telah terputus');
end;
label4.Caption:=' IP Client Tidak Aktif';
end;
59
Gambar 4.16 Tampilan apabila terjadi tutup koneksi
3. Untuk komponen IdIPwatch digunakan untuk mengecek atau mendeteksi
IP address komputer dimana aplikasi ini berjalan, berikut adalah kode
program untuk mengecek IP sebuah komputer atau host.
4. IdTCPServer bisa digunakan untuk pengiriman data. Pengiriman data
disini untuk mengirimkan data spesifikasi komputer client kepada server.
Pada Aplikasi saat dijalankan client aktif atau dalam posisi Listening,
menerima koneksi dari server dan menampilkan Alamat IP client di
treeview (ada pada aplikasi server). server akan menerima pesan yang
dikirimkan oleh client dan menampilkannya dalam treeview aplikasi
server:
procedure TFormserver.FormCreate(Sender: TObject);
begin
edit1.Text:=idipwatch1.LocalIP;
end;
60
Pada kode program diatas terjadi pemanggilan fungsi-fungsi untuk
mengecek data spesifikasi komputer client. Algoritma yang digunakan
untuk penampilkan data spesifikasi komputer client adalah algoritma
looping/pengulangan dan selection/pemilihan.
Algoritma looping/pengulangan digunakan untuk mengecek
komputer client yang akan ditampilkan spesifikasi komputernya.
Pengulangan ini apabila terjadi koneksi antara client dan server. perintah
procedure TForm1.IdTCPServer1Execute(AThread:
TIdPeerThread);
var
Pesan,pesan2:string;
convert:string; //untuk keyboard dan mouse penonaktikan
Begin
While Athread.Connection.Connected do
Begin
Pesan:=athread.Connection.readln;
if pesan = 'cekmemori2' then
begin
Athread.connection.writeln(IdIPWatch1.LocalIP);
Athread.connection.writeln(idipwatch1.LocalName);
Athread.connection.writeln(informasi.GetMetrics);
Athread.connection.writeln(informasi.GetCPU);
Athread.connection.writeln(informasi.Getbrandidcpu);
Athread.connection.writeln(informasi.Getvendoridcpu);
convert := Format(' %f MHz',
[informasi.GetCPUSpeed]);
Athread.connection.writeln(convert);
Athread.connection.writeln(informasi.GetMemory);
Athread.connection.writeln(informasi.memfree);
Athread.connection.writeln(informasi.memoripakai);
Athread.connection.writeln(informasi.GetOS);
Athread.connection.writeln(informasi.GetWindowsPath);
Athread.connection.writeln(informasi.GetSystemPath);
end;
end;
end;
61
looping atau pengulangan yang digunakan adalah while-do. pemakaian
perintah while hanya diperlukan satu kondisi untuk menjalankan looping
dan perintah yang di looping pada perintah while adalah perintah setelah
kondisi client konek atau terhubung dengan server.
Algoritma selection digunakan untuk menampilkan data spesifikasi
komputer di komputer server. Algoritma ini ditandai dengan perintah if-
then. Perintah if jika cek memori dipanggil dari aplikasi server. Perintah
selection terjadi setelah looping/pengulangan terhadap koneksi client ke
server, kemudian terjadi kondisi untuk membaca pesan cek memori.
Pada source code di atas, ketika dipanggil cek memori maka akan
memanggil fungsi-fungsi yang tergabung dan dideklarasikan pada unit
informasi. Berikut adalah fungsi-fungsi yang dipanggil :
1. Function Getbrandidcpu adalah fungsi yang digunakan untuk
mengetahui brand cpu yang digunakan pada sebuah komputer.
function Getbrandidcpu:string;
var
_eax, _ebx, _ecx, _edx: Longword;
i: Integer;
b: Byte;
s, s1, s2, s3, s_all: string;
begin
asm
mov eax,$80000003
db $0F
db $A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := '';
s1 := '';
s2 := '';
s3 := '';
62
for i := 0 to 3 do
begin
b := lo(_eax);
s3 := s3 + chr(b);
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1 := s1 + chr(b);
b := lo(_edx);
s2 := s2 + chr(b);
_eax := _eax shr 8;
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
s_all := s_all + s3 + s + s1 + s2;
asm
mov eax,$80000004
db $0F
db $A2
mov _eax,eax
mov _ebx,ebx
mov _ecx,ecx
mov _edx,edx
end;
s := '';
s1 := '';
s2 := '';
s3 := '';
for i := 0 to 3 do
begin
b := lo(_eax);
s3 := s3 + chr(b);
b := lo(_ebx);
s := s + chr(b);
b := lo(_ecx);
s1 := s1 + chr(b);
b := lo(_edx);
s2 := s2 + chr(b);
_eax := _eax shr 8;
_ebx := _ebx shr 8;
_ecx := _ecx shr 8;
_edx := _edx shr 8;
end;
if s2[Length(s2)] = #0 then
setlength(s2, Length(s2) - 1);
result:=s_all + s3 + s + s1 + s2;
end
63
2. Function getCPU adalah fungsi yang digunakan untuk mengetahui tipe
prosesor yang digunakan pada sebuah komputer.
3. Fungsi getspeedcpu digunakan untuk mengetahui kecepatan dalam
menjalankan aplikasi yang ada.
function GetCPU: string;
var
sysinfo: SYSTEM_INFO;
str: string;
begin
GetSystemInfo(sysinfo);
case sysinfo.dwProcessorType of
386:str:='386';
486:str:='486';
586:str:='Pentium';
end;
Result :=str;
end;
function GetCPUSpeed: Double;
const
DelayTime = 500;
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread,
THREAD_PRIORITY_TIME_CRITICAL);
Sleep(10);
asm
dw 310Fh
mov TimerLo, eax
mov TimerHi, edx
end;
Sleep(DelayTime);
64
4. Function Getcurrentuser digunakan untuk mendeteksi username yang
digunakan oleh komputer.
5. Fungsi getmemory akan dipanggil untuk mengecek besarnya kapasitas
suatu memori dalam hardisk di komputer client.
function GetCurrentUser: string;
var
lpName: PAnsiChar;
lpUserName: PAnsiChar;
lpnLength: DWORD;
begin
Result := '';
lpnLength := 0;
lpName:=''; // warning
WNetGetUser(nil, nil, lpnLength); // È¡µÃ×Ö´®³¤¶È
if lpnLength > 0 then
begin
GetMem(lpUserName, lpnLength);
if WNetGetUser(lpName, lpUserName, lpnLength) = NO_ERROR
then
Result := lpUserName;
FreeMem(lpUserName, lpnLength);
end;
end;
function GetMemory: string;
var
meminfo: Memorystatus;
begin
meminfo.dwLength :=SizeOf(Memorystatus);
GlobalMemoryStatus(meminfo);
Result :=inttostr(meminfo.dwTotalPhys div 1024)+'KB';
end;
asm
dw 310Fh
sub eax, TimerLo
sbb edx, TimerHi
mov TimerLo, eax
mov TimerHi, edx
end;
SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);
Result := TimerLo / (1000 * DelayTime);
end;
65
6. Fungsi getOS, digunakan untuk mengetahui sistem operasi yang
digunakan oleh suatu komputer.
7. Fungsi getwindowspath untuk mengetahui path dari directory windows
pada komputer client.
8. Fungsi GetSystemPath untuk mengetahui path dari system32 pada
komputer client.
function GetOS: string;
var
osInfo: OSVERSIONINFO;
begin
osInfo.dwOSVersionInfoSize:=SizeOf(OSVERSIONINFO);
GetVersionEx(osInfo);
result:='Windows '+IntToStr(osInfo.dwMajorVersion)+'.'+
IntToStr(osInfo.dwMinorVersion);
end;
function GetWindowsPath: string;
var
WindowsDir: array [0..255] of char;
begin
GetWindowsDirectory(WindowsDir,255);
Result :=WindowsDir;
end;
function GetSystemPath : string;
var
SysDir: array [0..255] of char;
begin
GetSystemDirectory(SysDir,255);
Result :=SysDir;
end;
66
9. Fungsi memoripakai untuk mengetahui kapasitas memori yang sedang
dipakai.
10. Fungsi resolusi layar client
5. Button chatting apabila di klik akan memanggil form chatting. Kode untuk
form chatting terlampir. Berikut kode untuk memanggil form chatting
function memoripakai : string;
var
meminfo: TMemoryStatus;
begin
GlobalMemoryStatus(meminfo);
result:= inttostr(meminfo.dwMemoryLoad
)+'%';
end;
function GetMetrics: string;
begin
Result :=inttostr(GetSystemMetrics(SM_CXSCREEN))
+'X'+inttostr(GetSystemMetrics(SM_CYSCREEN));
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form_Client_Main.show;
Form1.hide;
end;
67
2. Form utama server
Konstruksi aplikasi untuk bagian server dimulai dari desain form
aplikasi server (main server). Komponen yang digunakan untuk membuat
aplikasi server seperti tampak pada gambar diatas antara lain : label, button,
edit, tvcomputer, IdTCPClient, IdIPWatch, NMMRCClient, dan untuk
tampilan digunakan skinProvider dan skinManager. desain aplikasi sesuai
gambar dibawah ini :
Gambar 4.17 form utama server
Proses pengkodean terhadap komponen-komponen diatas di
bawah ini :
1. Button ‟hubungkan‟, button ini untuk menerima client yang akan
terhubung ke server. proses koneksi untuk dapat saling terhubung
dengan ditambahkan kode program sebagai berikut :
68
Apabila permintaan koneksi dari client diterima maka akan muncul
jendela baru seperti pada gambar di bawah ini :
Gambar 4.18 Keterangan telah menerima koneksi dari client
2. Button ‟tutup koneksi‟ bila akan memutuskan koneksi dari server.
kode programnya ditambahan setelah klik dua kali pada button tutup
koneksi adalah
procedure TFormclient.Button6Click(Sender: TObject);
//koneksi
var ports:integer;
begin
ports:=strtoint(edit3.Text);
With IdtcpClient1 do
Begin
Host:=edit1.text ;
Port:= ports;
connect;
end;
MessageDlg('terhubung ke Client' + edit1.text+' dengan port
'+ edit3.Text , mtInformation,
[mbOk], 0);
end;
procedure TFormclient.Button7Click(Sender: TObject);
begin
//tutup koneksi
if idtcpclient1.Connected then idtcpclient1.Disconnect;
MessageDlg('Koneksi terputus dengan ' + edit1.text+' dengan port '+
edit3.Text , mtInformation,
[mbOk], 0);
end;
69
Ketika koneksi diputus oleh server maka akan muncul
pemberitahuan atau informasi berupa jendela baru bahwa koneksi
telah putus seperti nampak pada gambar berikut ini :
Gambar 4.19 Ketika koneksi diputus oleh server
3. Button ‟ambil data client’. Proses untuk mengambil data dari client
berhubungan dengan pemanggilan fungsi-fungsi yang ada pada
aplikasi client. Fungsi-fungsi tersebut dipanggil dengan membaca
pesan ‟cekmemori2‟. Berikut adalah kode program untuk
menampilkan data client yang ditampilkan pada tvcomputer berupa
treeview.
procedure TFormclient.Button1Click(Sender: TObject);
var ip:string;
begin
IdTcpClient1.Writeln('cekmemori2'); ip:=idtcpclient1.ReadLn();
with tvComputer.Items.AddFirst( nil,ip ) do
begin
Selected := true;
end;
with tvComputer.Items do
begin
with tvComputer do
begin
with AddChild(Selected,'Sistem Operasi :
'+idtcpclient1.ReadLn())do
begin
70
ImageIndex:=1;
SelectedIndex:=1;
end;
with AddChild(Selected,'MAC : '+idtcpclient1.ReadLn()) do
begin
ImageIndex:=1;
SelectedIndex:=1;
end;
with AddChild(Selected,'Resolusi Layar : '+idtcpclient1.ReadLn())do
begin
ImageIndex:=1;
SelectedIndex:=1;
end;
with AddChild(Selected,'Jenis Komputer :
'+idtcpclient1.ReadLn()) do
begin
ImageIndex:=1;
SelectedIndex:=1;
end;
with AddChild(Selected,'Nama User : '+idtcpclient1.ReadLn())do
begin
ImageIndex:=1;
SelectedIndex:=1;
end;
with AddChild(Selected,'Kapasitas Memory :
'+idtcpclient1.ReadLn())do
begin
ImageIndex:=1;
SelectedIndex:=1;
end;
with AddChild(Selected,'Direktory windows :
'+idtcpclient1.ReadLn()) do
begin
ImageIndex:=1;
SelectedIndex:=1;
end;
with AddChild(Selected,'Direktori System 32:
'+idtcpclient1.ReadLn()) do
begin
ImageIndex:=1;
SelectedIndex:=1;
end;
with AddChild(Selected,'CPU Speed : '+idtcpclient1.ReadLn()) do
begin
ImageIndex:=1;
SelectedIndex:=1;
end;
71
4. IdIPwatch digunakan untuk mengecek IP Address komputer yang
kita gunakan. Dibawah ini kode program dalam aplikasi server.
5. Button chatting untuk melakukan komunikasi dengan client. Berikut
kode program ketika button ini diklik.
6. Button ’Remote’. Button ini digunakan untuk proses pengawasan
atau pemantauan terhadap aktivitas yang dilakukan oleh client.
Berikut proses pemanggilan aplikasi :
procedure TFormclient.FormCreate(Sender: TObject);
begin
edit1.Text:=idipwatch1.LocalIP;
end;
procedure TFormclient.Button3Click(Sender: TObject);
begin
frmmain.Show;//panggil form remote client
formclient.hide;//tutup form server utama.
end;
with AddChild(Selected,'BrandID CPU: '+idtcpclient1.ReadLn()) do
begin
ImageIndex:=1;
SelectedIndex:=1;
end;
with AddChild(Selected,'Vendor ID CPU: '+idtcpclient1.ReadLn()) do
begin
ImageIndex:=1;
SelectedIndex:=1;
end;
end; // with
end; end;
procedure TFormclient.Button2Click(Sender: TObject);
begin
Form_Server_Main.Show;
FormClient.Hide;
end;
72
Pada kode program diatas, terjadi pemanggilan terhadap form yang
baru yaitu form remote control client untuk mengontrol aktivitas user
atau client. Form yang dipanggil adalah sebagai berikut:
Gambar 4.20 Tampilan remote control client
Desain diatas menggunakan komponen-komponen sebagai
berikut : image, mainmenu, actionlist, dan NMMRCClient. Nmm
digunakan untuk remote control, image digunakan untuk tempat
menampilkan hasil pemantauan terhadap client.
Proses utama pada aplikasi ini ada pada menus connection,
sehingga akan ditampilkan form untuk memilih client mana yang
akan dimonitoring. Desain form untuk memilih client mana yang
akan di-monitoring adalah.
73
Gambar 4.21 Tampilan untuk memulai remote control
Komponen yang digunakan untuk desain tersebut adalah edit,
label, bitbutton, groupbox dan panel. Kode program yang
ditambahkan pada desain diatas adalah sebagai berikut :
a. BitButton ‟ok‟ merupakan button untuk memulai proses
monitoring, proses ini akan dimulai ketika IP Address atau client
yang akan dimonitoring telah di pilih.
Kode diatas memanggil procedure save, procedure ini telah
dideklarasikan sebelumnya dengan kode sebagai berikut :
procedure TfrmConDlg.bOKClick(Sender: TObject);
begin
Save;
end;
procedure TfrmConDlg.Load;
var LIni: TIniFile;
begin
if FileExists(FIniFileName) then
begin
LIni:= TIniFile.Create(IncludeTrailingPathDelimiter(
ExtractFilePath(Application.ExeName)) + FIniFileName);
Try
74
b. BitButton ’cancel’ digunakan untuk membatalkan proses
monitoring dan kembali pada form utama server.
Untuk kode program diatas diperintahkan untuk ‟load‟. Load disini
memanggil procedure yang telah dideklarasikan sebelumnya
seperti tampak dibawah ini :
procedure TfrmConDlg.bCancelClick(Sender: TObject);
begin
Load;
end;
procedure TfrmConDlg.Load;
var LIni: TIniFile;
begin
if FileExists(FIniFileName) then
begin
LIni:= TIniFile.Create(IncludeTrailingPathDelimiter(
ExtractFilePath(Application.ExeName)) + FIniFileName);
try
edHost.Text:= LIni.ReadString('Server','Host','localhost');
sedPort.Value:= LIni.ReadInteger('Server','Port',0);
edUser.Text:= LIni.ReadString('Auth','User','');
edPassword.Text:= LIni.ReadString('Auth','Password','');
finally
FreeAndNil(LIni);
end;
end;
end;
edHost.Text:= LIni.ReadString('Server','Host','localhost');
sedPort.Value:= LIni.ReadInteger('Server','Port',0);
edUser.Text:= LIni.ReadString('Auth','User','');
edPassword.Text:= LIni.ReadString('Auth','Password','');
finally
FreeAndNil(LIni);
end;
end;
end;
75
4.4 Fase Pengujian
Pada tahapan pengujian aplikasi remote spesifikasi komputer ini,
dilakukan dengan cara pengujian mandiri dan blackbox testing.
Dalam melakukan pemrograman, penulis melakukan pengujian
mandiri yaitu pengujian terhadap kode-kode program untuk memastikan
kebenaran program tersebut. Pengujian ini dilakukan untuk mencari
kesalahan yang ditimbulkan karena salah tulis atau kesalahan
pemrograman. Kegiatan unit testing ini disebut juga debugging. Kegiatan
ini digunakan untuk mencari posisi peringatan (warning), kesalahan
(error) dari kode-kode program dan mengetahui debugging yang sukses.
4.4.1 Spesifikasi computer
Adapun spesifikasi komputer yang digunakan dalam pengujian
aplikasi ini adalah :
Table 4.5 Tabel spesifikasi hardware untuk pengujian aplikasi
No. Hardware Server Client
1. Processor Dual-Core 2.20 GHz Pentium 4
2. Memory 1 GB 1 GB
3. Monitor resolusi display minimal
1024 x 768 (untuk
mendapatkan tampilan
terbaik).
resolusi display minimal
1024 x 768 (untuk
mendapatkan tampilan
terbaik).
4. Ethernet card Ya Ya
5. Keyboard Ya Ya
76
6. Mouse Ya Ya
7. OS Windows Seven Windows XP SP3
4.4.2 Tipe jaringan yang digunakan
Gambar 4.22 Tipe jaringan yang digunakan
Tipe jaringan ini hanya digambarkan beberapa komputer client
yang terhubung ke komputer server melalui switch atau hub, atau
pengujian aplikasi ini dapat melalui jaringan wireless.
4.4.3 Hasil Pengujian
1. Tampilan Aplikasi Client
Gambar 4.23 interface aplikasi client
77
Ini adalah tampilan aplikasi pada bagian client, aplikasi ini hanya
dapat menghubungkan dirinya (client) agar terhubung ke server. IP
address langsung terdeteksi pada setiap client ketika aplikasi ini
dijalankan. Port number, dan remote merupakan port-port yang
digunakan sebagai jalan terhubungnya dengan server untuk proses
remote terhadap client.
2. Tampilan Aplikasi Server
Gambar 4.24 interface aplikasi server
Ketika Form aplikasi server di aktifkan maka akan
terdeteksi IP address pada komputer server. Untuk port number,
dan remote telah terinisialisasi langsung. Port number digunakan
untuk menghubungkan dengan banyak client.
78
Pada button ambil data client ketika di klik akan
ditampilkan data memori dari masing-masing client yang
terhubung.
Data memori atau spesifikasi komputer client yang
ditampilkan antara lain adalah sistem operasi, MAC, resolusi layar,
jenis komputer, nama user, kapasitas memori, directory windows
dan sistem32, kecepatan CPU, BrandID CPU, serta vendor CPU.
Button remote digunakan untuk mengawasi aktivitas client dan
mengendalikan client oleh server.
3. Tampilan pada aplikasi server ketika kedua aplikasi telah terhubung
Gambar 4.25 interface terkoneksi
Tampilan diatas adalah tampilan ketika client dan server telah
dapat terhubung dengan port yang sama.
79
4. Tampilan pada aplikasi client ketika telah terkoneksi dengan server
Gambar 4.26 Interface terkoneksi pada aplikasi client
5. Tampilan pada saat button „ambil data dari client’ di klik
Gambar 4.27 interface ambil data memori client
Tampilan diatas menampilkan nomor IP client yang pertama
akan dilihat data memorinya.
80
Berikut adalah tampilan data client dengan meng-klik nomor
IP-nya. Tampilan ini berupa pohon, ketika IP address di klik maka
akan tampil spesifikasi komputer tiap-tiap host sesuai IP addressnya.
Informasi spesifikasi ini telah dibaca oleh tiap client pada saat aplikasi
client di aktifkan, server hanya memanggil informasi memori tersebut
dari client dan client mengirimkan ke server. Berikut tampilan pada
saat tree dari IP address host diklik.
Gambar 4.28 interface ambil data memori client1
Untuk Tampilan server yang telah terhubung dengan beberapa
client berdasarkan IP address-nya. Setiap IP address yang ditampilkan
telah memuat informasi spesifikasi komputer dirinya.sebagai berikut.
81
Gambar 4.29 Tampilan spesifikasi komputer client yang terhubung
berikut adalah bentuk tampilan saat semua client di tampilkan, terlihat data
yang panjang sehingga dibutuhkan scroolbar untuk menampilkannya.
Gambar 4.30 Tampilan spesifikasi beberapa komputer client yang terhubung
82
6. Interface Remote
Gambar 4.31 Interface pada saat monitoring client
Tampilan ini ketika button Remote diklik. Pada proses remote
client digunakan untuk memantau dan mengendalikan aktivitas satu
client. Selanjutnya, untuk memilih client mana yang akan di-remote
pilih menu connection, pilih active. Interface untuk menu active
seperti dibawah ini :
Gambar 4.32 Tampilan untuk memilih client yang akan di-monitoring.
83
Berikut hasil pengujian remote terhadap client
Gambar 4.33 Tampilan desktop komputer client yang di-remote
Hasil pengujian ini dilakukan dengan menggunakan sistem operasi
antara windows xp dan windows seven. Tidak ada perubahan untuk
program seven, ataupun xp.
Pada form remote terhadap client terdapat pilihan menu untuk
menampilkan aplikas cmd dan enable remote control pada client sebagai
berikut :
84
Gambar 4.34 tampilan menu dalam form remote client
Berikut tampilan ketika menjalankan aplikasi cmd pada komputer client
Gambar 4.35 tampilan menjalankan aplikasi pada client
85
Pada aplikasi remote ini dapat menjalankan aktivitas apapun dari
server contohnya dapat meremove atau un-install program, menjalankan
microsoft office, bermain game, dan lain sebagainya.
7. Interface chatting
Setiap akan melakukan proses chatting akan terjadi pemanggilan form
baik pada bagian server ataupun bagian client. Berikut tampilan
chatting pada server.
Gambar 4.36 tampilan chatting pada server
Untuk chatting ini server memulai mengijinkan client dapat
berkomunikasi dengan tombol start. Tampilan tersebut untuk
mengetahui chat dengan client. Pada bagian client tampilan untuk
chatting sebagai berikut.
86
Gambar 4.37 tampilan chatting pada client
Gambar diatas dapat menampilkan beberapa host yang terhubung pada
kotak list. List host yang terhubung berfungsi untuk memilih dengan
host mana kita akan berkomunikasi.
87
8. Interface tutup koneksi
Proses menutup koneksi dapat dilakukan pada aplikasi client ataupun
aplikasi server.
Gambar 4.38 tampilan tutup koneksi pada server
Penutupan pada server dilakukan pada form utama server.
sedangkan penutupan pada aplikasi client sebagai berikut
Gambar 4.39 tampilan tutup koneksi pada client
88
4.4.4 Pengujian Blackbox
Pengujian pada dasarnya adalah menemukan serta menghilangkan
„bug’ (kesalahan kesalahan) yang ada di sistem atau perangkat lunak itu.
Adapun pengujian terhadap sistem yang dilakukan adalah bertujuan untuk
menemukan kesalahan yang masih ada pada sistem. Pengujian dilakukan
dengan menggunakan pendekatan black-box testing. Dengan
menggunakan pendekatan black-box testing kita dapat mengetahui apakah
sistem dapat memberikan keluaran seperti yang kita harapkan.
Walaupun sistem telah diuji beberapa kali, tidak menutup
kemungkinan adanya kesalahan. Oleh karena itu, pengujian dan perbaikan
harus terus dilakukan seiring dengan digunakannya sistem ini
.Cara pengujian blackbox testing dilakukan dengan menjalankan
aplikasi remote spesifikasi client server dan melakukan pengiriman data
apakah sesuai dengan kesimpulan yang diharapkan. Hasil pengujian
blackbox testing disajikan dalam tabel di bawah ini :
89
Tabel 4.7 Hasil pengujian terhadap aplikasi spesifikasi basis client server
No Pengujian Interface yang diharapkan
Hasil
pengujian
1. Interface aplikasi client
Tampilan aplikasi client ok
2. Interface aplikasi
server
Tampilan aplikasi server ok
3. Koneksi client dan
server
Tampilan saling terkoneksi ok
4. Monitoring client Tampilan monitoring client ok
5. Option monitoring Tampilah option ok
6. Pengambilan data
memori client
Tampilan memori client
berdasarkan IP
ok
7 Chatting client-server Tampilan chatting ok
90
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Pengembangan aplikasi remote spesifikasi desktop berbasis client
server bertujuan untuk mengefisiensikan aplikasi yang dapat digunakan
untuk beberapa aplikasi. Dari penelitian dan tulisan yang telah penulis
uraikan, maka dapat ditarik kesimpulan sebagai berikut
1. Aplikasi ini dibuat untuk menampilkan data atau spesifikasi
komputer. Server dapat meremote spesifikasi komputer client
setelah keduanya saling terhubung.
2. Data memori atau spesifikasi komputer yang ditampilkan antara
lain adalah sistem operasi, MAC, resolusi layar, jenis komputer,
nama user, kapasitas memori, directory windows dan sistem32,
kecepatan CPU, BrandID CPU, serta vendor CPU.
3. Aktivitas remote yang dapat dilakukan oleh server adalah remote
terhadap spesifikasi komputer, remote control dan remote desktop
terhadap komputer client.
90
91
5.2. Saran
Aplikasi ini tentu saja masih belum sempurna. Masih banyak hal
yang dapat dilakukan untuk mengembangkan aplikasi ini agar menjadi
lebih baik lagi, antara lain :
1. Mengembangkan aplikasi ini untuk wilayah atau cakupan yang lebih
besar dan luas serta dapat digunakan untuk jaringan wireless.
2. Pada aplikasi ini digunakan 2 port untuk remote spesifikasi dan
remote monitoring, diharapkan pada pengembangan berikutnya port
yang digunakan hanya satu untuk keefisiensi kerja jaringan. Selain
itu dengan remote login agar otomatisasi client yang baru terhubung
langsung terdeteksi..
3. Spesifikasi komputer yang ditampilkan masih terbatas pada koding,
sehingga dapat dikembangkan spesifikasi komputer client sesuai
yang diinginkan dan dibutuhkan.
4. Komunikasi antara client dan server belum terjadi, fitur yang perlu
ditambahkan adalah fitur chatting.
5. Perlunya dikembangkan aplikasi server yang mampu mengakses
banyak aplikasi client sekaligus pada satu waktu.
6. Perlunya dikembangkan aplikasi sejenis yang berjalan antar sistem
operasi.
DAFTAR PUSTAKA
Sofana, Iwan. 2010. CISCO CCNA & JARINGAN KOMPUTER, Informatika.
Bandung.
Sutanta, edhy. 2004. Komunikasi Data & Jaringan Komputer, Graha Ilmu
Bandung.
Fiade, Andrew. 2010. bab 5 komponen indy.
Wahana Komputer. 2002. Pemrograman Borland Delphi 7.0. Yogyakarta: Andi
Offset
Dharwiyanti, Sri. 2003. “Pengantar Unified Modelling Language (UML)”, Ilmu
Komputer ;
Ketut, Dharmayuda. 2007. Program Aplikasi Client Server. Bandung : Penerbit
Informatika
Kendal & Kendal. 2005. Analisis dan Perancangan sistem. Jakarta.
Pujianto S.kom. 2007. 50 trik pemrograman delphi 8.0. Jakarta : Elek Media
Komputindo.
Komunitas Delphi. Get the total and available memory. [Online] Tersedia :
http://www.delphitricks.com/source-
code/systeminfo/get_the_total_and_available_memory.html
[ 10 Juni 2010]
www.softcov. 2009. Indy Delphi 7- Socket Aplication. [Online] Tersedia :
http://www.softcov.com/id/programming-and-testing/indy-in-delphi-7-
using-socket-application.html [12 Agustus 2010]
Tanawijaya, Antonius. 2010. Sistem Monitoring Dan Pengontrolan Server Jarak
Jauh Menggunakan Mobile Phone. Skripsi : Tidak Diterbitkan.
Arie Januar Smaratul Fuad. 2008. PC (Personal Computer) Remote Access
Menggunakan Ponsel (Telepon Selular) Pada Jaringan Berbasis Media
Bluetooth. Skripsi : Tidak Diterbitkan.
Predi Aferi Hasan. 2005. Manajemen Jaringan Dengan Memanfaatkan Aplikasi
Remote Administrator (Radmin) Sebagai Maintenance System Di
Pt.Wahana Esa Shambada. Skripsi : Tidak Diterbitkan.
Supriyanto. 2006. Sistem RMM (Remote Maintenance Monitoring) Sebagai Alat
Bantu Teknisi Untuk Memantau Kinerja Peralatan NDB Di Bandara
Husein Sastranegara Bandung. Skripsi : Tidak Diterbitkan.
DAFTAR LAMPIRAN
LAMPIRAN A
Penambahan komponen client server delphi................................... A-1
Penambahan komponen NMM ....................................................... A-2
Penambahan komponen Alite skin ................................................. A-3
xv
Lampiran source code chatting 1. Source code chatting pada server
unit Unit_Server_Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, WinSock, Grids, ComCtrls, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent, IdTCPServer, IdAntiFreezeBase, IdAntiFreeze, IdThreadMgr, IdThreadMgrDefault, IdServerIOHandler, IdServerIOHandlerSocket, IdException, IdIntercept, IdLogBase, IdLogEvent, SyncObjs; resourcestring StatusDateTimeFormat = 'mm/dd/yyyy" - "hh:nn:ss:zzz AM/PM'; WelcomeMessage = 'Chat With Us' + #13#10 + type TSCSClientInfo = class(TObject) ScreenName : string; LocalName : string; IP : string; Port : string; PeerIP : string; PeerPort : string; Index : Integer; Thread : Pointer; //TIdPeerThread; end; TForm_Server_Main = class(TForm) ChatServerSocket: TIdTCPServer; pcLearnSockets: TPageControl; tsServer: TTabSheet; gbServerSettings: TGroupBox; lblServerPort: TLabel; edServerPort: TEdit; gbUserDefinedServerSettings: TGroupBox; tsAdminMsg: TTabSheet; TabSheet2: TTabSheet; sgServerConnections: TStringGrid; cbBroadcastAsAlert: TCheckBox; btnStartStopServer: TButton; IdAntiFreeze1: TIdAntiFreeze; IdThreadMgrDefault1: TIdThreadMgrDefault; lblServerAddress: TLabel; lbIndyVersion: TLabel; btnDisconnect: TButton; btnDisconnectAll: TButton; cbSendCloseToClient: TCheckBox; cbSpaceMessages: TCheckBox; cbRecordSentMessages: TCheckBox; memMessageBox: TMemo; edSend: TEdit; memLog: TMemo; cbShowAdminMsgs: TCheckBox; Button1: TButton;
procedure edSendKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure sgServerConnectionsKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure memMessageBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure ChatServerSocketConnect(AThread: TIdPeerThread); procedure ChatServerSocketExecute(AThread: TIdPeerThread); procedure ChatServerSocketListenException(AThread: TIdListenerThread; AException: Exception); procedure ChatServerSocketNoCommandHandler(ASender: TIdTCPServer; const AData: String; AThread: TIdPeerThread); procedure ChatServerSocketStatus(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String); procedure btnStartStopServerClick(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure btnDisconnectClick(Sender: TObject); procedure ChatServerSocketAfterCommandHandler(ASender: TIdTCPServer; AThread: TIdPeerThread); procedure ChatServerSocketBeforeCommandHandler(ASender: TIdTCPServer; const AData: String; AThread: TIdPeerThread); procedure ChatServerSocketDisconnect(AThread: TIdPeerThread); procedure ChatServerSocketException(AThread: TIdPeerThread; AException: Exception); procedure btnDisconnectAllClick(Sender: TObject); procedure memLogKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormActivate(Sender: TObject); procedure cbShowAdminMsgsClick(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } ClientList: TList; procedure AddToClientList(AScreenName: string; AThread: TIdPeerThread); procedure RemoveFromClientList(ClientInfo: TSCSClientInfo); //Protocol procedure BrodcastMessage(Msg: string; AThread: TIdPeerThread); procedure ProxyMessage(Msg: string; AThread: TIdPeerThread); function GetLoginList: string; public { Public declarations } end; var Form_Server_Main: TForm_Server_Main; implementation uses IdTCPConnection, IdThread, Unitclient; {$R *.DFM} procedure TForm_Server_Main.FormCreate(Sender: TObject); begin tsAdminMsg.TabVisible := False;
ClientList := TList.Create; sgServerConnections.RowCount := 2; sgServerConnections.FixedRows := 1; sgServerConnections.ColCount := 13; //Setup Columns with sgServerConnections do begin Cells[0,0] := 'Mem. Addr.'; ColWidths[1] := 25; Cells[2,0] := 'Screen Name'; ColWidths[2] := 100; Cells[3,0] := 'Local Host'; ColWidths[3] := 100; Cells[4,0] := 'Local Address'; ColWidths[4] := 100; Cells[5,0] := 'Local Port'; ColWidths[5] := 75; Cells[6,0] := 'Remote Host'; ColWidths[6] := 100; Cells[7,0] := 'Remote Address'; ColWidths[7] := 100; Cells[8,0] := 'Remote Port'; ColWidths[8] := 75; end; end; procedure TForm_Server_Main.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TForm_Server_Main.FormDestroy(Sender: TObject); begin if ChatServerSocket.Active then begin btnDisconnectAllClick(Self); try ChatServerSocket.Active := False; except on E: Exception do begin memLog.Lines.Add('Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ') [' + E.ClassName + ']: ' + E.Message); end; //on end; end; ClientList.Free; end; procedure TForm_Server_Main.edSendKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin if Key = VK_Return then begin if cbBroadcastAsAlert.Checked then begin BrodcastMessage('!' + edSend.Text, nil); end else begin BrodcastMessage('Admin.> ' + edSend.Text, nil); end; if cbRecordSentMessages.Checked then begin memMessageBox.Lines.Add('Admin.> ' + edSend.Text); if cbSpaceMessages.Checked then begin memMessageBox.Lines.Add(''); end; end; edSend.Text := ''; end; end; //////////////////////////////////////////////////////////////////////////////////////////////////// procedure TForm_Server_Main.BrodcastMessage(Msg: string; AThread: TIdPeerThread); var List: TList; I: Integer; begin List := ChatServerSocket.Threads.LockList; try for I := 0 to List.Count - 1 do begin try if AThread <> TIdPeerThread(List.Items[I]) then begin TIdPeerThread(List.Items[I]).Connection.WriteLn(Msg); end; except on E: Exception do begin memLog.Lines.Add('Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ') [' + E.ClassName + ']: ' + E.Message); memLog.Lines.Add('The thread has been stopped'); TIdPeerThread(List.Items[I]).Stop; end; //on end; //try end; //for finally ChatServerSocket.Threads.UnlockList; end;
end; procedure TForm_Server_Main.ProxyMessage(Msg: string; AThread: TIdPeerThread); var List: TList; Data: TStrings; Sender: string; Receivers: TStrings; ChatMsg: string; I, J: Integer; begin Data := TStringList.Create; Receivers := TStringList.Create; try Data.CommaText := Msg; Sender := TSCSClientInfo(AThread.Data).ScreenName; //Also should = Data.Strings[0]; Receivers.CommaText := Data.Strings[1]; ChatMsg := Sender + '> ' + Data.Strings[2]; J := Receivers.IndexOf('Administrator'); if J > -1 then begin if cbShowAdminMsgs.Checked then begin memMessageBox.Lines.Add(ChatMsg); end else begin I := sgServerConnections.Cols[2].IndexOf('Administrator'); if I <= -1 then begin TIdPeerThread(AThread).Connection.WriteLn('Admin. is not online.'); end; end; end; List := ChatServerSocket.Threads.LockList; try for I := 0 to List.Count - 1 do begin try J := Receivers.IndexOf(TSCSClientInfo(TIdPeerThread(List.Items[I]).Data).ScreenName); if (J > -1) and (AThread <> TIdPeerThread(List.Items[I])) then begin TIdPeerThread(List.Items[I]).Connection.WriteLn(ChatMsg); end; except on E: Exception do begin memLog.Lines.Add('Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ') [' + E.ClassName + ']: ' + E.Message);
memLog.Lines.Add('The thread has been stopped'); TIdPeerThread(List.Items[I]).Stop; end; //on end; //try end; //for finally ChatServerSocket.Threads.UnlockList; end; finally Receivers.Free; Data.Free; // List := nil; end; end; procedure TForm_Server_Main.sgServerConnectionsKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = VK_DELETE) and (sgServerConnections.Row <> 0) then begin btnDisconnectClick(Self); end; end; procedure TForm_Server_Main.memMessageBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_DELETE then memMessageBox.Clear; end; //////////////////////////////////////////////////////////////////////////////////////////////////// procedure TForm_Server_Main.AddToClientList(AScreenName: string; AThread: TIdPeerThread); var ClientInfo: TSCSClientInfo; I: Integer; begin ClientInfo := TSCSClientInfo.Create; ClientInfo.ScreenName := AScreenName; ClientInfo.LocalName := AThread.Connection.LocalName; ClientInfo.PeerIP := AThread.Connection.Socket.Binding.PeerIP; ClientInfo.PeerPort := IntToStr(AThread.Connection.Socket.Binding.PeerPort); ClientInfo.IP := AThread.Connection.Socket.Binding.IP; ClientInfo.Port := IntToStr(AThread.Connection.Socket.Binding.Port); ClientInfo.Thread := AThread; AThread.Data := ClientInfo; ClientList.Add(ClientInfo); I := sgServerConnections.Cols[2].IndexOf('-----'); if I <= -1 then begin //Add entry to grid
sgServerConnections.RowCount := sgServerConnections.RowCount + 1; I := ClientList.Count; sgServerConnections.Cells[1 ,I] := IntToStr(-1); sgServerConnections.Cells[2 ,I] := '-----'; end; with sgServerConnections do begin Cells[0 ,I] := IntToStr(Integer(ClientInfo)); //Store other info Cells[1 ,I] := IntToStr(ClientList.Count); Cells[2 ,I] := ClientInfo.ScreenName; Cells[3 ,I] := ClientInfo.LocalName; Cells[4 ,I] := TIdPeerThread(ClientInfo.Thread).Connection.Socket.Binding.IP; Cells[5 ,I] := IntToStr(TIdPeerThread(ClientInfo.Thread).Connection.Socket.Binding.Port); //Don't know how to get this info yet Cells[6 ,I] := 'N/A'; Cells[7 ,I] := TIdPeerThread(ClientInfo.Thread).Connection.Socket.Binding.PeerIP; Cells[8 ,I] := IntToStr(TIdPeerThread(ClientInfo.Thread).Connection.Socket.Binding.PeerPort); end; end; procedure TForm_Server_Main.RemoveFromClientList(ClientInfo: TSCSClientInfo); var I: Integer; begin //Get the address of ClientInfo. Remember objects are automatically dereferenced by the //compilier so we don't need to use the @ClientInfo symbol here. I := sgServerConnections.Cols[0].IndexOf(IntToStr(Integer(ClientInfo))); if I > -1 then begin //Setup Columns with sgServerConnections do begin Cells[0 ,I] := ''; Cells[1 ,I] := IntToStr(-1); Cells[2 ,I] := '-----'; Cells[3 ,I] := ''; Cells[4 ,I] := ''; Cells[5 ,I] := ''; Cells[6 ,I] := ''; Cells[7 ,I] := ''; Cells[8 ,I] := ''; end; end; end; function TForm_Server_Main.GetLoginList: string; begin
Result := Copy(sgServerConnections.Cols[2].CommaText, 1, Length(sgServerConnections.Cols[2].CommaText)-1); end; //////////////////////////////////////////////////////////////////////////////////////////////////// procedure TForm_Server_Main.ChatServerSocketConnect(AThread: TIdPeerThread); var Data: string; I: Integer; begin memLog.Lines.Add('Sending connection message (' + FormatDateTime(StatusDateTimeFormat, Now) + ')'); AThread.Connection.WriteLn('&' + WelcomeMessage); AThread.Connection.WriteLn('&' + 'Date/Time: ' + FormatDateTime(StatusDateTimeFormat, Now)); AThread.Connection.WriteLn('&' + ConnectHelpMsg); //Get Login Info which the client is expected to send when connecting. try AThread.Connection.ReadTimeout := 5000000; //If they don't send it in 5 sec. then drop the connection. try Data := AThread.Connection.ReadLn; finally // AThread.Connection.ReadTimeout := IdDefTimeout; //Restore default end; if Data <> 'Anonymous' then begin I := sgServerConnections.Cols[2].IndexOf(Data); if I <= -1 then begin memLog.Lines.Add('Authenticated (' + FormatDateTime(StatusDateTimeFormat, Now) + ') ' + Data); AThread.Connection.WriteLn('Authenticated: ' + Data); AddToClientList(Data, AThread); end else begin memLog.Lines.Add('Not Authenticated (' + FormatDateTime(StatusDateTimeFormat, Now) + ') ' + Data); AThread.Connection.WriteLn('Not Authenticated. User already logged on.'); Sleep(10000); //Wait for client to get message AThread.Connection.Disconnect; end; end else begin memLog.Lines.Add('Not Authenticated (' + FormatDateTime(StatusDateTimeFormat, Now) + ') ' + Data); AThread.Connection.WriteLn('Not Authenticated. Server does not accept Anonymous users.'); Sleep(10000); //Wait for client to get message
AThread.Connection.Disconnect; end; except on E: Exception do begin memLog.Lines.Add('Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ') [' + E.ClassName + ']: ' + E.Message); AThread.Connection.WriteLn('Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ') [' + E.ClassName + ']: ' + E.Message); Sleep(10000); //Wait for client to get message AThread.Connection.Disconnect; end; end; end; procedure TForm_Server_Main.ChatServerSocketDisconnect(AThread: TIdPeerThread); var ClientInfo: TSCSClientInfo; begin ClientInfo := TSCSClientInfo(AThread.Data); AThread.Data := nil; //Cleanup list ClientList.Delete(ClientList.IndexOf(ClientInfo)); ClientInfo.Thread := nil; //Cleanup grid RemoveFromClientList(ClientInfo); //Free ClientInfo.Free; // memLog.Lines.Add('Disconnect (' + FormatDateTime(StatusDateTimeFormat, Now) + ')'); end; procedure TForm_Server_Main.ChatServerSocketException(AThread: TIdPeerThread; AException: Exception); begin memLog.Lines.Add('Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ') [' + AException.ClassName + ']: ' + AException.Message); end; procedure TForm_Server_Main.ChatServerSocketExecute(AThread: TIdPeerThread); var Cmd: string; Data: string; begin try while AThread.Connection.Connected do begin if memLog.Lines.Count > 500 then memLog.Clear; memLog.Lines.Add('Execute (' + FormatDateTime(StatusDateTimeFormat, Now) + ')');
Data := AThread.Connection.ReadLn; Cmd := Copy(Data,1,1); if Cmd = '@' then //Client logging in begin BrodcastMessage(Data, AThread); AThread.Connection.WriteLn('~' + GetLoginList); end else if Cmd = '~' then //Client request user list begin AThread.Connection.WriteLn('~' + GetLoginList); end else if Cmd = '!' then //Server Broadcast Message (from remote client) begin BrodcastMessage(Copy(Data,2,Length(Data)-1), nil); AThread.Connection.WriteLn('+OK "' + Data + '"'); end else if Cmd = '"' then //Send Message begin ProxyMessage(Data, AThread); end else if Cmd = '-' then //Quit begin BrodcastMessage('-' + TSCSClientInfo(AThread.Data).ScreenName, nil); AThread.Connection.Disconnect; end else begin BrodcastMessage('-' + TSCSClientInfo(AThread.Data).ScreenName, nil); AThread.Connection.WriteLn('Client protocol error. Server disconnected.'); AThread.Connection.Disconnect; end; end; except on E: Exception do begin memLog.Lines.Add('OnExecute Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ') [' + E.ClassName + ']: ' + E.Message); end; //on end; end; procedure TForm_Server_Main.ChatServerSocketListenException(AThread: TIdListenerThread; AException: Exception); begin memLog.Lines.Add('Listen Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ')'); end; procedure TForm_Server_Main.ChatServerSocketAfterCommandHandler(ASender: TIdTCPServer; AThread: TIdPeerThread);
begin memLog.Lines.Add('AfterCommandHandler (' + FormatDateTime(StatusDateTimeFormat, Now) + ')'); end; procedure TForm_Server_Main.ChatServerSocketBeforeCommandHandler(ASender: TIdTCPServer; const AData: String; AThread: TIdPeerThread); begin memLog.Lines.Add('BeforeCommandHandler (' + FormatDateTime(StatusDateTimeFormat, Now) + ')'); end; procedure TForm_Server_Main.ChatServerSocketNoCommandHandler(ASender: TIdTCPServer; const AData: String; AThread: TIdPeerThread); begin memLog.Lines.Add('NoCommandHandler (' + FormatDateTime(StatusDateTimeFormat, Now) + ')'); end; procedure TForm_Server_Main.ChatServerSocketStatus(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String); begin memLog.Lines.Add('Status (' + FormatDateTime(StatusDateTimeFormat, Now) + ') ' + AStatusText); end; procedure TForm_Server_Main.btnStartStopServerClick(Sender: TObject); begin if ChatServerSocket.Active then begin memLog.Lines.Add('Stopping...'); btnDisconnectAllClick(Self); try ChatServerSocket.Active := False; except on E: Exception do begin memLog.Lines.Add('Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ') [' + E.ClassName + ']: ' + E.Message); end; //on end; memLog.Lines.Add('...Stopped'); btnStartStopServer.Caption := 'Start'; end else begin memLog.Lines.Add('Starting...'); ChatServerSocket.DefaultPort := StrToInt(edServerPort.Text); ChatServerSocket.Bindings.Clear; ChatServerSocket.Active := True;
memLog.Lines.Add('...Started'); memLog.Lines.Add('Listening...'); btnStartStopServer.Caption := 'Stop'; lblServerAddress.Caption := 'Server: ' + ChatServerSocket.LocalName; lbIndyVersion.Caption := 'Indy Version: ' + ChatServerSocket.Version; end; end; procedure TForm_Server_Main.btnDisconnectClick(Sender: TObject); var I, X: Integer; ClientInfo: TSCSClientInfo; begin X := sgServerConnections.Row; I := StrToInt(sgServerConnections.Cells[0,X]); ClientInfo := Pointer(I); BrodcastMessage('-' + ClientInfo.ScreenName, nil); TIdPeerThread(ClientInfo.Thread).Connection.WriteLn('Disconnnected by the server'); if cbSendCloseToClient.Checked then begin TIdPeerThread(ClientInfo.Thread).Connection.WriteLn('#'); end; try TIdPeerThread(ClientInfo.Thread).Connection.Disconnect; except //on E: EIdNotConnected do //begin // //Dont worry about this error for now. //end; on E: Exception do begin memLog.Lines.Add('Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ') [' + E.ClassName + ']: ' + E.Message); memLog.Lines.Add('The thread has been stopped'); TIdPeerThread(ClientInfo.Thread).Stop; end; //on end; end; procedure TForm_Server_Main.btnDisconnectAllClick(Sender: TObject); var List: TList; I: Integer; begin List := ChatServerSocket.Threads.LockList; try for I := 0 to List.Count - 1 do begin
try if cbSendCloseToClient.Checked then begin TIdPeerThread(List.Items[I]).Connection.WriteLn('#'); end; TIdPeerThread(List.Items[I]).Connection.Disconnect; except //on E: EIdNotConnected do //begin // //Dont worry about this error //end; on E: Exception do begin memLog.Lines.Add('Exception (' + FormatDateTime(StatusDateTimeFormat, Now) + ') [' + E.ClassName + ']: ' + E.Message); memLog.Lines.Add('The thread has been stopped'); TIdPeerThread(List.Items[I]).Stop; end; //on end; //try end; //for finally ChatServerSocket.Threads.UnlockList; end; end; procedure TForm_Server_Main.memLogKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_DELETE then memMessageBox.Clear; end; procedure TForm_Server_Main.FormActivate(Sender: TObject); begin pcLearnSockets.ActivePage := tsServer; end; procedure TForm_Server_Main.cbShowAdminMsgsClick(Sender: TObject); begin if cbShowAdminMsgs.Checked then begin tsAdminMsg.TabVisible := True; pcLearnSockets.ActivePage := tsAdminMsg; end else begin tsAdminMsg.TabVisible := False; end; end;
procedure TForm_Server_Main.Button1Click(Sender: TObject); begin Form_Server_Main.Hide; FormClient.Show; end; end.
2. Source code chatting pada client unit Unit_Client_Main; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ScktComp, ExtCtrls, IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdIOHandler, IdIOHandlerSocket, IdSocks, IdIntercept, IdLogBase, IdLogEvent, IdException; resourcestring StatusDateTimeFormat = 'mm/dd/yyyy" - "hh:nn:ss:zzz AM/PM'; type TForm_Client_Main = class(TForm) pcClientTab: TPageControl; tsClient: TTabSheet; gbBasicClientSettings: TGroupBox; gbConnectionAddressOrHost: TGroupBox; edConnectionAddress: TEdit; gbConnectionport: TGroupBox; edConnectionPort: TEdit; tsTextChat: TTabSheet; memSend: TMemo; memChatText: TMemo; lbUsers: TListBox; ChatClientSocket: TIdTCPClient; IdAntiFreeze1: TIdAntiFreeze; memLog: TMemo; IdLogEvent1: TIdLogEvent; pStatusPanel: TPanel; Ind01: TShape; Ind02: TShape; Ind03: TShape; Ind04: TShape; Ind05: TShape; IndicatorResetTimer: TTimer; btnConnectDisconnect: TButton; pnlRefreshList: TPanel; GroupBox1: TGroupBox; edScreenName: TEdit; Label6: TLabel; cbAutoLogin: TCheckBox; lblInfo: TLabel;
cbSpaceMessages: TCheckBox; cbRecordSentMessages: TCheckBox; Button1: TButton; Label1: TLabel; procedure btnConnectDisconnectClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure ChatClientSocketConnected(Sender: TObject); procedure ChatClientSocketDisconnected(Sender: TObject); procedure memSendKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure IdLogEvent1Connect(ASender: TIdConnectionIntercept); procedure IdLogEvent1Disconnect(ASender: TIdConnectionIntercept); procedure IdLogEvent1Receive(ASender: TIdConnectionIntercept; AStream: TStream); procedure IdLogEvent1Received(ASender: TComponent; const AText, AData: String); procedure IdLogEvent1Send(ASender: TIdConnectionIntercept; AStream: TStream); procedure IdLogEvent1Sent(ASender: TComponent; const AText, AData: String); procedure IdLogEvent1Status(ASender: TComponent; const AText: String); procedure memChatTextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure ChatClientSocketStatus(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String); procedure IndicatorResetTimerTimer(Sender: TObject); procedure pnlRefreshListClick(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; TStatusThread = class(TThread) private FClientConnected: Boolean; FClientThreadTerminated: Boolean; FClientThreadSuspended: Boolean; procedure UpdateClientThreadStatus; protected procedure Execute; override; end; TClientThread = class(TThread) private Msg: string; procedure ReceivedLine; procedure MessageToLog;
protected procedure Execute; override; end; TScrollingTextInfoThread = class(TThread) private FReset: Boolean; FAlert: Boolean; FAlertMsg: string; FAlertCount: Integer; procedure SetCaption; procedure UpdateInfoAndScroll; protected procedure Execute; override; published property Reset: Boolean read FReset write FReset; property Alert: Boolean read FAlert write FAlert; property AlertMsg: string read FAlertMsg write FAlertMsg; end; var Form_Client_Main: TForm_Client_Main; ClientThread: TClientThread; StatusThread: TStatusThread; ScrollingTextInfoThread: TScrollingTextInfoThread; implementation uses Main, Unit1; {$R *.DFM} procedure TForm_Client_Main.FormCreate(Sender: TObject); begin ClientThread := TClientThread.Create(True); StatusThread := TStatusThread.Create(False); StatusThread.FreeOnTerminate := True; ScrollingTextInfoThread := TScrollingTextInfoThread.Create(False); ScrollingTextInfoThread.FreeOnTerminate := True; pStatusPanel.Color := clBtnFace; end; procedure TForm_Client_Main.FormClose(Sender: TObject; var Action: TCloseAction); begin ScrollingTextInfoThread.Terminate; repeat Application.ProcessMessages; until ScrollingTextInfoThread.Terminated; StatusThread.Terminate; repeat Application.ProcessMessages; until StatusThread.Terminated; ClientThread.FreeOnTerminate := True; ClientThread.Terminate;
repeat Application.ProcessMessages; until ClientThread.Terminated; if ChatClientSocket.Connected then begin ChatClientSocket.Disconnect; end; repeat Application.ProcessMessages; until not ChatClientSocket.Connected; Action := caFree; end; procedure TForm_Client_Main.FormDestroy(Sender: TObject); begin end; procedure TForm_Client_Main.btnConnectDisconnectClick(Sender: TObject); begin try ScrollingTextInfoThread.Suspend; ScrollingTextInfoThread.Reset := True; if not ChatClientSocket.Connected then begin if (edConnectionAddress.Text <> '') and (edConnectionPort.Text <> '') then begin ChatClientSocket.Host := edConnectionAddress.Text; ChatClientSocket.Port := StrToInt(edConnectionPort.Text); ChatClientSocket.Connect; memChatText.Text := ''; memSend.Text := ''; pcClientTab.ActivePage := tsTextChat; end else begin ShowMessage('You must enter in a user name and server name or address to connect.'); end; end else begin ChatClientSocket.WriteLn('-' + edScreenName.Text); ChatClientSocket.Disconnect; end; finally ScrollingTextInfoThread.Resume; end; end;
procedure TForm_Client_Main.ChatClientSocketConnected(Sender: TObject); begin //Activate the receiving thread if ClientThread.Suspended then begin ClientThread.Resume; end; if cbAutoLogin.Checked then begin memLog.Lines.Add('Login (' + FormatDateTime(StatusDateTimeFormat, Now) + ')'); ChatClientSocket.WriteLn(edScreenName.Text); memLog.Lines.Add('Authenticated (' + FormatDateTime(StatusDateTimeFormat, Now) + ')'); ChatClientSocket.WriteLn('@' + edScreenName.Text); end; end; procedure TForm_Client_Main.ChatClientSocketDisconnected(Sender: TObject); begin ScrollingTextInfoThread.Suspend; ScrollingTextInfoThread.Reset := True; ScrollingTextInfoThread.Resume; if not ClientThread.Suspended then begin ClientThread.Suspend; end; memLog.Lines.Add('Logout (' + FormatDateTime(StatusDateTimeFormat, Now) + ')'); end; procedure TForm_Client_Main.ChatClientSocketStatus(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String); begin memLog.Lines.Add('Socket Status (' + FormatDateTime(StatusDateTimeFormat, Now) + ') ' + AStatusText); end; procedure TForm_Client_Main.IdLogEvent1Connect(ASender: TIdConnectionIntercept); begin memLog.Lines.Add('Log Event (' + FormatDateTime(StatusDateTimeFormat, Now) + ') Connect'); end; procedure TForm_Client_Main.IdLogEvent1Disconnect(ASender: TIdConnectionIntercept); begin memLog.Lines.Add('Log Event (' + FormatDateTime(StatusDateTimeFormat, Now) + ') Disconnect');
end; procedure TForm_Client_Main.IdLogEvent1Receive(ASender: TIdConnectionIntercept; AStream: TStream); begin Form_Client_Main.Ind05.Brush.Color := clLime; memLog.Lines.Add('Log Event (' + FormatDateTime(StatusDateTimeFormat, Now) + ') Receive'); end; procedure TForm_Client_Main.IdLogEvent1Received(ASender: TComponent; const AText, AData: String); begin Form_Client_Main.Ind05.Brush.Color := clLime; memLog.Lines.Add('Log Event (' + FormatDateTime(StatusDateTimeFormat, Now) + ') Received'); end; procedure TForm_Client_Main.IdLogEvent1Send(ASender: TIdConnectionIntercept; AStream: TStream); begin Form_Client_Main.Ind04.Brush.Color := clLime; memLog.Lines.Add('Log Event (' + FormatDateTime(StatusDateTimeFormat, Now) + ') Send'); end; procedure TForm_Client_Main.IdLogEvent1Sent(ASender: TComponent; const AText, AData: String); begin Form_Client_Main.Ind04.Brush.Color := clLime; memLog.Lines.Add('Log Event (' + FormatDateTime(StatusDateTimeFormat, Now) + ') Sent'); end; procedure TForm_Client_Main.IdLogEvent1Status(ASender: TComponent; const AText: String); begin FormatDateTime(StatusDateTimeFormat, Now) + ') ' + AText); end; { TClientThread } procedure TClientThread.Execute; begin while not Terminated do begin try if Form_Client_Main.ChatClientSocket.Connected then begin Msg := Form_Client_Main.ChatClientSocket.ReadLn; Synchronize(ReceivedLine);
end; except { on E: EIdConnClosedGracefully do begin Msg := 'Client Thread Exception: [' + E.ClassName + ']: ' + E.Message; Synchronize(MessageToLog); //Do nothing. Eat the exception so the thread does not terminate because I want to use it later. //Also, eating the exception will allow the disconnect event to fire and the connected property to update. end; on E: EIdSocketError do begin Msg := 'Client Thread Exception: [' + E.ClassName + ']: ' + E.Message; Synchronize(MessageToLog); //Do nothing. Eat the exception so the thread does not terminate because I want to use it later. //Also, eating the exception will allow the disconnect event to fire and the connected property to update. Suspend; end; } on E: Exception do begin //Something must have really gone wrong if we got to this point. Close and restart the client. Msg := 'Client Thread Exception: [' + E.ClassName + ']: ' + E.Message; Synchronize(MessageToLog); Terminate; end; end; end; end; procedure TClientThread.MessageToLog; begin Form_Client_Main.memLog.Lines.Add(Msg); end; procedure TClientThread.ReceivedLine; var Cmd: string; I: Integer; begin Cmd := Copy(Msg,1,1); with Form_Client_Main do begin if Cmd = '@' then begin I := lbUsers.Items.IndexOf(Copy(Msg,2,Length(Msg)-1)); if I <= -1 then
begin I := lbUsers.Items.IndexOf('-----'); if I <= -1 then begin lbUsers.Items.Add(Copy(Msg,2,Length(Msg)-1)); end else begin lbUsers.Items[I] := Copy(Msg,2,Length(Msg)-1); end; end; end else if (Cmd = '-') and (Copy(Msg,1,2) <> '--') then begin I := lbUsers.Items.IndexOf(Copy(Msg,2,Length(Msg)-1)); if I > -1 then begin lbUsers.Items[I] := '-----'; end; end else if Cmd = '~' then begin lbUsers.Items.CommaText := Copy(Msg,2,Length(Msg)-1); lbUsers.Items[0] := 'Administrator'; end else if Cmd = '#' then begin Form_Client_Main.Close; end else if Cmd = '!' then begin ScrollingTextInfoThread.Suspend; ScrollingTextInfoThread.Reset := True; ScrollingTextInfoThread.Alert := True; ScrollingTextInfoThread.AlertMsg := 'Admin Alert!.....' + Copy(Msg,2,Length(Msg)-1); ScrollingTextInfoThread.Resume; end else if Cmd = '&' then //Welcome message or part of welcome message begin memChatText.Lines.Add(Copy(Msg,2,Length(Msg)-1)); end else begin memChatText.Lines.Add(Msg); if cbSpaceMessages.Checked then begin memChatText.Lines.Add(''); end; end;
//Debug lines //memChatText.Lines.Add(Cmd); //memChatText.Lines.Add(Msg); end; end; { TStatusThread } procedure TStatusThread.Execute; begin while not Terminated do begin try Sleep(250); //This thread doesn't need to be active all the time. Also this line keeps the CPU out of 100% FClientConnected := Form_Client_Main.ChatClientSocket.Connected; FClientThreadTerminated := ClientThread.Terminated; FClientThreadSuspended := ClientThread.Suspended; Synchronize(UpdateClientThreadStatus); except Terminate; end; end; end; procedure TStatusThread.UpdateClientThreadStatus; begin with Form_Client_Main do begin if FClientConnected then begin Ind01.Brush.Color := clLime; btnConnectDisconnect.Caption := 'Disconnect'; end else begin Ind01.Brush.Color := clBlack; btnConnectDisconnect.Caption := 'Connect'; if lbUsers.Count > 0 then begin lbUsers.Clear; end; end; if not FClientThreadTerminated then begin Ind02.Brush.Color := clLime; end else begin
Ind02.Brush.Color := clRed; end; if FClientThreadSuspended then begin Ind02.Brush.Color := clGreen; Ind03.Brush.Color := clBlack; end else begin Ind03.Brush.Color := clLime; end; end; //with end; { TScrollingTextInfoThread } procedure TScrollingTextInfoThread.Execute; begin FReset := False; Synchronize(SetCaption); while not Terminated do begin try Sleep(15); //16 This thread doesn't need to be active all the time. Also this line keeps the CPU out of 100% if FReset then begin Synchronize(SetCaption); FReset := False; end; if FAlert then begin if FAlertCount <= -1 then begin FAlert := False; FReset := True; end; end; Synchronize(UpdateInfoAndScroll); except Terminate; end; end; end; procedure TScrollingTextInfoThread.SetCaption; begin with Form_Client_Main do begin if ChatClientSocket.Connected then begin if not FAlert then
begin lblInfo.Caption := 'Indy Version: ' + ChatClientSocket.Version + '.....' + 'Client: ' + ChatClientSocket.LocalName + '.....' + 'Client IP: ' + ChatClientSocket.Socket.Binding.IP + '.....' + 'Client Port: ' + IntToStr(ChatClientSocket.Socket.Binding.Port) + '.....' + 'Server IP: ' + ChatClientSocket.Socket.Binding.PeerIP + '.....' + 'Server Port: ' + IntToStr(ChatClientSocket.Socket.Binding.PeerPort) + '.....'; lblInfo.Font.Color := clWindowText; end else begin FAlertCount := 3; lblInfo.Caption := FAlertMsg; lblInfo.Font.Color := clRed; end; end else begin lblInfo.Caption := 'Client: ' + ChatClientSocket.LocalName + '.....' + 'Indy Version: ' + ChatClientSocket.Version + '.....'; lblInfo.Font.Color := clWindowText; end; lblInfo.Left := tsTextChat.Width; end; end; procedure TScrollingTextInfoThread.UpdateInfoAndScroll; begin with Form_Client_Main do begin lblInfo.Left := lblInfo.Left - 1; //lblInfo.Invalidate; if (lblInfo.Left + memChatText.Width) <= memChatText.Left then begin lblInfo.Left := tsTextChat.Width; Dec(FAlertCount); end; end; end; procedure TForm_Client_Main.memSendKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var SendData: string; Receivers: TStrings; I: Integer; begin if Key = VK_Return then
begin if ChatClientSocket.Connected then begin Receivers := TStringList.Create; for I := 0 to lbUsers.Items.Count - 1 do begin if lbUsers.Selected[I] then Receivers.Add(lbUsers.Items[I]); end; if Receivers.Text <> '' then begin SendData := '"' + edScreenName.Text + '",' + //Sender '"' + Receivers.CommaText + '",' + //Receiver(s) '"' + memSend.Text + '"'; //Message ChatClientSocket.WriteLn(SendData); end; Receivers.Free; end; if cbRecordSentMessages.Checked then begin memChatText.Lines.Add(edScreenName.Text + '> ' + memSend.Text); if cbSpaceMessages.Checked then begin memChatText.Lines.Add(''); end; end; memSend.Text := ''; end; end; procedure TForm_Client_Main.memChatTextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_Delete then begin memChatText.Text := ''; end; end; procedure TForm_Client_Main.IndicatorResetTimerTimer(Sender: TObject); begin Form_Client_Main.Ind04.Brush.Color := clBlack; Form_Client_Main.Ind05.Brush.Color := clBlack; end; procedure TForm_Client_Main.pnlRefreshListClick(Sender: TObject); begin ChatClientSocket.WriteLn('~');
end; procedure TForm_Client_Main.Button1Click(Sender: TObject); begin Form_Client_Main.Hide; Form1.Show; end; end.
Lampiran-lampiran
A. Proses Penambahan TClientSocket dan TServerSocket components pada
Delphi 7.0
1. Buka program Delphi 7.0
2. Pilih menu Component, pilih install package seperti pada gambar dibawah
ini :
Menu component ada pada speedbar atau toolbar. Component ini
digunakan untuk menambahkan atau membuat baru baik komponen
ataupun paket tambahan pada delphi. Untuk menambahkan TClientSocket
dan TServerSocket maka dipilih menu install package.
3. Lalu akan keluar tab package untuk ditambahkan
Lampiran-lampiran
Jendela tab package ini untuk memilih dan mencari directory tempat
menyimpan paket atau komponen yang akan ditambahkan.
4. Kemudian klik add, browse (bin/dclsockets70.bpl), seperti pada gambar
berikut :
Paket yang akan ditambahkan untuk TClientSocket dan TServerSocket
adalah dclsockets70.bpl. berada pada directori delphi/bin dclsockets70.bpl
5. Klik open, klik ok. Selesai penambahan package.
Lampiran-lampiran
B. Proses instalasi komponen NMM
1. Extract library NMM di computer anda
2. Buka program Delphi 7.0
3. Buka NMM70.dpk lalu klik “compile” dan “install”
4. Kemudian install pula dengan cara yang sama untuk NMMRC70.dpk and
NMMAudio70.dpk
5. Lalu tambahkan library path NMM pada Delphi sebagai berikut
6. Pilih menu tools, environment options
Environment option ini berada pada speedbar pada delphi, environment
digunakan untuk menyesuaikan path atau directory library yang
ditambahkan.
Lampiran-lampiran
7. Muncul tab environment option, klik library
Untuk menyesuaikan directory library yang ditambahkan maka pilih menu
library, dan diisi serta disesuaikan library path-nya.
8. Klik library path yang ada, maka akan muncul tab baru berupa directory
untuk memilih komponen NMM dengan lokasi yang sesuai.
Lampiran-lampiran
9. Klik button sesuai gambar panah pada nomor 4, lalu akan muncul browse
for folder, pilih directory tempat NMM source disimpan. Contoh
(C:NMM/NMM.pub/Source).
10. Kemudian klik ok, dan pilih add, maka akan tampil tambahan library
seperti dibawah ini, selesei klik ok.
Lampiran-lampiran
C. Proses instalasi komponen Alite untuk skin Delphi 7.0
1. Download open source alite ini di http://www.alphaskins.com/dwnld.php
2. Kemudian ekstrak dari rar-nya. Simpan di drive C, dan copy folder skins
dalam Alite ke drive C.
3. Buka program Delphi 7.0
4. Pilih menu tools, environment options
Environment option ini berada pada speedbar pada delphi, environment
digunakan untuk menyesuaikan path atau directory library yang
ditambahkan.
5. Muncul tab environment option, klik library
Lampiran-lampiran
Untuk menyesuaikan directory library yang ditambahkan maka pilih menu
library, dan diisi serta disesuaikan library path komponen alite.
6. Klik library path yang ada, maka akan muncul tab baru berupa directory
untuk memilih komponen Alite dengan lokasi yang sesuai.
7. Klik button sesuai gambar panah pada nomor 4, lalu akan muncul browse
for folder, pilih directory tempat Alite source disimpan. Contoh
(C:ALite/D7). Ini untuk Delphi 7.0
Lampiran-lampiran
8. Setelah klik ok. Klik add seperti dibawah ini :
9. Klik ok. Selesai instalasi komponen Alite.