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, AlGhifari, Aiman, Aufa yang telah menjadi tempat penulis melepaskan penat dalam penyusunan Skripsi ini. 2. Teman-Teman seperjuangan KKN 15 2009, Teknik Informatika UIN 2006, TINetwork, 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 NIP. 197105222006041002
Viva Arifin, MMSI NIP. 19730810 200604 2 001
Tim Pembimbing, Pembimbing I
Pembimbing II
Herlino Nanang, M.T, CCNA NIP. 197312092005011002
Andrew Fiade, M.Kom NIP. 198208112009121004 Mengetahui,
Dekan Fakultas Sains Dan Teknologi
Ketua Program Studi Teknik Informatika
DR. Syopiansyah Jaya Putra, M.Sis NIP. 196801172001121001
Yusuf Durrachman M.Sc, MIT 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 1
Pembimbing 2
Herlino Nanang, M.T, CCNA NIP. 197312092005011002
Andrew Fiade, M.Kom NIP. 198208112009121004
Mengetahui, Ketua Program Studi Teknik Informatika
Yusuf Durachman, MSc, M.IT NIP. 197105222006041002
ii
PERNYATAAN DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENARBENAR 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 pihakpihak 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
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
vii
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
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
x
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
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
xiii
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 onlinewww.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 jaringanjaringan 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 Retransmission 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 PCWizard, 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 / memonitoring 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 referensireferensi yang relevan tersebut, penulis lalu mencari informasiinformasi 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 PCWizard, CPU-Z, Everest, Speecy, dan juga DX-Diag. Aplikasiaplikasi 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
Metode Pengumpulan Data
Metode RAD Analisis Kebutuhan
Tujuan Membuat Aplikasi monitoring hardware
Fase Perencanaan Syarat-syarat
Fase Perancangan
Syarat-syarat : Borland Delphi 7.0
Usecase dan squencial Diagram
Perancangan Proses dengan UML Perancangan Antarmuka
Fase Konstruksi
Fase Pelaksanaan
Pembuatan Pengkodean Konfigurasi Client Server Pengujian black box
kurang
Tanggapan User baik Aplikasi Monitoring
Gambar 3.2 Fase-fase metodologi penelitian dengan pengembangan aplikasi menggunakan RAD
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 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
2. Ambil data memori client Table 4.2 Use case Scenario ambil data memori client Nama Use case
ambil data memori client
Aktor yang terlibat
Server , Client Server hendak mengetahui informasi tentang Client
Trigger Pre condition Action Post condition
Actor telah saling terkoneksi Client mengecek spesifikasi dirinya, Server dapat langsung memanggil informasi yang telah di tulis oleh Client Data dari Client dapat ditampilkan
3. Remote desktop dan monitoring client Table 4.3 Use case Scenario Remote desktop dan monitoring client Nama Usecase Aktor yang terlibat Trigger
Remote desktop dan monitoring client Client, Server 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 Nama Use case Aktor yang terlibat
Tutup koneksi Server , Client
Trigger
Salah satu atau kedua actor ingin memutuskan koneksi
Pre condition
Kedua actor telah terhubung
Action Post condition
Tutup koneksi Disconnect, IP tidak aktif
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
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 memonitoring 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 Tempat menampil kan spesifikas i komputer berupa memo
IP address Port
Koneksi client
Tutup Koneksi
Ambil data client
Remote
Gambar 4.11 Aplikasi untuk server 2. Tampilan aplikasi client Ip address port
Koneksi ke server
Gambar 4.12 aplikasi untuk client 3. Tampilan Remote control dan Monitoring conection
exit
Tempat untuk tampilan remote
Gambar 4.13 Remote client
55
4. Tampilam koneksi remote control client
host ok
port cancel
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.
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) 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; 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 : 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; Button ‟tutup koneksi‟ ini digunakan ketika akan memutuskan hubungan dengan server. Jika koneksi telah terputus maka akan tampil jendela baru seperti berikut ini :
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. procedure TFormserver.FormCreate(Sender: TObject); begin edit1.Text:=idipwatch1.LocalIP; end; 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:
60
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; 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
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 ifthen. 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. 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;
3.
Fungsi getspeedcpu digunakan untuk mengetahui kecepatan dalam menjalankan aplikasi yang ada. 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
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;
4.
Function Getcurrentuser digunakan untuk mendeteksi username yang digunakan oleh komputer. 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;
5. Fungsi getmemory akan dipanggil untuk mengecek besarnya kapasitas suatu memori dalam hardisk di komputer client. function GetMemory: string; var meminfo: Memorystatus; begin meminfo.dwLength :=SizeOf(Memorystatus); GlobalMemoryStatus(meminfo); Result :=inttostr(meminfo.dwTotalPhys div 1024)+'KB'; end;
65
6. Fungsi getOS, digunakan untuk mengetahui sistem operasi yang digunakan oleh suatu komputer. function GetOS: string; var osInfo: OSVERSIONINFO; begin osInfo.dwOSVersionInfoSize:=SizeOf(OSVERSIONINFO); GetVersionEx(osInfo); result:='Windows '+IntToStr(osInfo.dwMajorVersion)+'.'+ IntToStr(osInfo.dwMinorVersion); end; 7.
Fungsi getwindowspath untuk mengetahui path dari directory windows pada komputer client. function GetWindowsPath: string; var WindowsDir: array [0..255] of char; begin GetWindowsDirectory(WindowsDir,255); Result :=WindowsDir; end;
8.
Fungsi GetSystemPath untuk mengetahui path dari system32 pada komputer client. 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. function memoripakai : string; var meminfo: TMemoryStatus; begin GlobalMemoryStatus(meminfo); result:= inttostr(meminfo.dwMemoryLoad )+'%'; end;
10. Fungsi resolusi layar client function GetMetrics: string; begin Result :=inttostr(GetSystemMetrics(SM_CXSCREEN)) +'X'+inttostr(GetSystemMetrics(SM_CYSCREEN)); end;
5. Button chatting apabila di klik akan memanggil form chatting. Kode untuk form chatting terlampir. Berikut kode untuk memanggil form chatting 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 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;
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.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
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;
4.
IdIPwatch digunakan untuk mengecek IP Address komputer yang kita gunakan. Dibawah ini kode program dalam aplikasi server. procedure TFormclient.FormCreate(Sender: TObject); begin edit1.Text:=idipwatch1.LocalIP; end;
5.
Button chatting untuk melakukan komunikasi dengan client. Berikut kode program ketika button ini diklik. procedure TFormclient.Button2Click(Sender: TObject); begin Form_Server_Main.Show; FormClient.Hide; end;
6.
Button ’Remote’. Button ini digunakan untuk proses pengawasan atau pemantauan terhadap aktivitas yang dilakukan oleh client. Berikut proses pemanggilan aplikasi : procedure TFormclient.Button3Click(Sender: TObject); begin frmmain.Show;//panggil form remote client formclient.hide;//tutup form server utama. 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. procedure TfrmConDlg.bOKClick(Sender: TObject); begin Save; end; Kode diatas memanggil procedure save, procedure ini telah dideklarasikan sebelumnya dengan kode sebagai berikut : procedure TfrmConDlg.Load; var LIni: TIniFile; begin if FileExists(FIniFileName) then begin LIni:= TIniFile.Create(IncludeTrailingPathDelimiter( ExtractFilePath(Application.ExeName)) + FIniFileName); Try
74
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; b. BitButton
’cancel’
digunakan
untuk
membatalkan
proses
monitoring dan kembali pada form utama server. procedure TfrmConDlg.bCancelClick(Sender: TObject); begin Load; end; Untuk kode program diatas diperintahkan untuk ‟load‟. Load disini memanggil procedure yang telah dideklarasikan sebelumnya seperti tampak dibawah ini : 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;
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
resolusi display minimal
1024 x 768 (untuk
1024
mendapatkan tampilan
mendapatkan
terbaik).
terbaik).
4.
Ethernet card
Ya
Ya
5.
Keyboard
Ya
Ya
x
768
(untuk tampilan
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 Hasil No
Pengujian
Interface yang diharapkan pengujian
1.
Interface aplikasi client
Tampilan aplikasi client
ok
2.
Interface aplikasi
Tampilan aplikasi server
ok
Tampilan saling terkoneksi
ok
server 3.
Koneksi client dan server
4.
Monitoring client
Tampilan monitoring client
ok
5.
Option monitoring
Tampilah option
ok
6.
Pengambilan data
Tampilan memori client
ok
memori client
berdasarkan IP
Chatting client-server
Tampilan chatting
7
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/sourcecode/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-7using-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.