Anda di halaman 1dari 119

APLIKASI REMOTE WEBCAM

PADA LAN (LOCAL AREA NETWORK)

SKRIPSI
Ditujukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar
Sarjana Teknik Jurusan Teknik Informatika

Disusun Oleh :
Zeno Danny Kuncoro
035314036

TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2009
LAN (LOCAL AREA NETWORK) REMOTE
WEBCAM APPLICATION

A THESIS
Presented as Partial Fulfillment of the Requirements to obtain the Sarjana
Teknik Degree in Department of Informatics Engineering

Created by :
Zeno Danny Kuncoro
035314036

DEPARTMENT OF INFORMATICS ENGINEERING


FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2009
ii
iii
PERNYATAAN KEASLIAN KARYA

Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini

tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan

dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.

Yogyakarta, April 2009

Penyusun

Zeno Danny Kuncoro

iv
THANKS TO :

Tuhan Yesus Kristus atas Berkat, Kasih dan karunia Nya

Terimakasih atas segala pengampunan yang telah diberikan.

Bapakku A.Y. Mahyarudin dan Ibuku Lucia Sumirah.

Terimakasih atas segala kepercayaan, dukungan serta bimbingan hingga nanti.

Kakakku Elishabet Elsih Lestari

Terimakasih atas dukungan serta wejangan-wejangannya.

Kakakku Cornelius Lilik Prianggono.

Terimakasih atas segala sesuatu yang telah kau ajarkan ke adikmu ini.

Kekasih hatiku : the X

Terimakasih atas waktu, semangat dan telah menjadi yang terbaik buatku.

Almamaterku Teknik Informatika Universitas Sanata Dharma khususnya angkatan 2003.

v
ABSTRAKSI

Dalam sebuah warnet dibutuhkan pengawasan ekstra untuk mencegah

terjadinya tindak kejahatan pencurian terhadap perangkat warnet oleh pengguna.

Hingga saat ini, solusi yang diambil hanyalah menggunakan kamera pengawas

atau CCTV (Closed-Circuit Television), dan ini membutuhkan biaya yang lebih.

Untuk menangani hal ini penyusun mencoba memanfaatkan webcam

sebagai kamera pengawas. Dengan menggunakan webcam, dapat menekan biaya

yang digunakan karena pada umumnya warnet sudah memiliki webcam disetiap

komputer workstationnya yang selama ini hanya digunakan sebagai fasilitas

pendukung saja.

Aplikasi yang bersifat client-server ini diharapkan mampu untuk

mendukung tujuan diatas, dimana komputer workstation menjalankan aplikasi

server dan komputer operator menjalankan aplikasi client. Server akan merespon

request client berupa pengiriman citra yang telah ditangkap lalu diproses oleh

server kepada client. Proses pengambilan citra dan mengirimkannya secara

periodik inilah yang akan dilakukan terus menerus selama client melakukan

request kepada server.

Aplikasi ini menggunakan Microsoft® Visual Basic® 6.0 sebagai compilernya

dan webcam yang telah terintegrasi ke dalam sistem operasi dengan baik sebagai

perangkat yang akan mengambil citra.

vi
ABSTRACT

A internet cafe needed extra supervision to prevents the occurrence of

crime against theft internet cafes devices by the user. Until now, solutions that are

taken is using the camera supervisors only or CCTV (Closed-Circuit Television),

and this costs more.

To handle this case I tried to take advantage of the camera as a webcam

supervisors. By using the webcam, can be used to press charges because, in

general, Internet Cafe has a webcam in every workstation that this is only used as

supporting facilities only.

Client-server application is expected to be able to support the goals above,

where the workstation computer run the server application and the operator

computer run the client application. The server will respond to client requests in

form of image that has been captured and processed by the server to the client.

Processes the image and send them periodically is what will be done continuously

for the client to request to the server.

This application is using Microsoft ® Visual Basic ® 6.0 as the compiler and a

webcam that has been integrated into the operating system as the device that will

capture the image.

vii
LEMBAR PERNYATAAN PENYETUJUAN

PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS

Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :

Nama : Zeno Dani Kuncoro

Nomor Mahasiswa : 035314036

Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan

Universitas Sanata Dharma karya ilmiah saya yang berjudul :

“Aplikasi Remote Webcam pad LAN (Local Area Network)”

Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan

kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan,

mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan

data, mendistribusikannya secara terbatas dan mendistribusikannya di Internet

atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya

maupun memberikan royalty kepada saya selama tetap mencantumkan nama saya

sebagai penyusun.

Demikian pernyataan ini saya buat dengan sebenarnya.

Dibuat di Yogyakarta

Pada tanggal April 2009

Yang menyatakan

( Zeno Danny Kuncoro )

viii
KATA PENGANTAR

Puji dan syukur kepada Tuhan Yang Maha Esa yang telah

mengaruniakan Berkat dan Rahmat-Nya sehingga penyusun dapat menyelesaikan

tugas akhir ini.

Dalam proses penyusunan tugas akhir ini ada begitu banyak pihak yang

telah memberikan bantuan dan perhatian dengan caranya masing-masing sehingga

tugas akhir ini dapat diselesaikan. Oleh karena itu penyusun mengucapkan terima

kasih diantaranya kepada :

1. Bapak Alb. Agung Hadhiatma, S.T., M.T. selaku dosen pembimbing I

tugas akhir yang telah banyak memberikan bimbingan dalam penyusunan

tugas akhir ini.

2. Bapak H. Agung Hernawan, S.T. selaku dosen pembimbing II tugas akhir

yang telah banyak memberikan bimbingan dalam penyusunan tugas akhir

ini.

3. Bapak JB. Budi Darmawan, S.T., M.T. dan Bapak Puspaningtyas Sanjoyo

Adi, S.T., M.T. selaku panitia penguji yang telah memberikan kritikan,

masukan serta saran untuk menyempurnakan tugas akhir ini.

4. Ibu Ridowati Gunawan, S.Kom., M.T. selaku dosen pembimbing

akademik angkatan 2003.

5. Bapak Emanuel Belle Bau, Spd. Dan Yustinus Nugroho sebagai laboran

yang telah mendukung dalam mempersiapkan ujian pendadaran.

ix
6. Seluruh staff dosen Teknik Informatika Universitas Sanata Dharma yang

telah memberikan bekal ilmu, arahan teknis dan pengalaman selama

penyusun menempuh studi.

7. Seluruh staff Sekretariat Fakultas Sains dan Teknologi yang banyak

membantu penyusun dalam urusan administrasi akademik, terutama

menjelang ujian tugas akhir dan yudisium.

8. Orangtuaku tercinta AY Mahyarudin dan Lucia Sumirah dan kakak-

kakakku yang telah memberikan cinta, doa, dorongan, bantuan, perhatian

serta bimbingannya sedari penyusun kecil hingga saat ini.

9. Seluruh teman-teman seperjuangan di Jurusan Teknik Informatika

angkatan 2003.

10. Seluruh pihak yang telah membantu penulisan, baik secara langsung

maupun tidak langsung yang tidak dapat penyusun sebutkan satu persatu.

Dengan rendah hati penyusun menyadari bahwa tugas akhir ini masih

jauh dari sempurna, oleh karena itu berbagai kritik dan saran untuk perbaikan

tugas akhir ini sangat penyusun harapkan. Akhir kata semoga tugas akhir ini

bermanfaat bagi semua pihak. Terima kasih.

Yogyakarta, April 2009

Penyusun.

x
DAFTAR ISI

Halaman Judul ………………………………………………………………….. i


Halaman Persetujuan …………………………………………………………… ii
Halaman Pengesahan …………………………………………………………… iii
Halaman Pernyataan Keaslian Karya ………………………………………… iv
Halaman Persembahan ………………………………………………………….. v
Abstraksi ………………………………………………………………………... vi
Abstract …………………………………………………………………………. vii
Halaman Pernyataan Persetujuan Publikasi …………………………………….. viii
Kata Pengantar ………………………………………………………………….. ix
Daftar Isi ………………………………………………………………………... xi
Daftar Gambar ………………………………………………………………….. xv
Daftar Tabel …………………………………………………………………….. xvii

BAB I PENDAHULUAN
1.1. Latar Belakang ………………………………………………………….. 1
1.2. Rumusan Masalah ………………………………………………………. 2
1.3. Batasan Masalah ………………………………………………………... 2
1.4. Tujuan Penelitian ……………………………………………………….. 3
1.5. Metodologi Penelitian …………………………………………………... 3
1.6. Sistematika Penulisan …………………………………………………... 4

xi
BAB II LANDASAN TEORI
2.1. Web Camera (webcam) …………………………………………………. 6
2.1.1. Pengertian ………………………………………………………. 6
2.1.2. Teknologi ……………………………………………………….. 6
2.2. Bitmap…………………………………………………………………… 7
2.2.1. Algoritma Penyimpanan ………………………………………... 8
2.2.2. Format file pada umumnya ……………………………………... 9
2.3. JPEG (Join Photographics Expert Group) ……………………………… 10
2.3.1. Encoding ………………………………………………………... 11
2.3.2. Color Space Transformations …………………………………... 11
2.3.3. Downsampling ………………………………………………….. 12
2.3.4. Compression Ratio dan Artifacts ………………………………. 12
2.4. Windows API (Application Program Interface) ………………………... 13
2.5. Windows Socket (Winsock) ……………………………………………. 16
2.6. Pemrograman menggunakan Visual Basic 6.0 …………………………. 20
2.6.1. Integrated Development Environment (IDE) …………………… 20
2.6.2. Program Visual Basic yang sangat sederhana ………………….. 25
2.6.3. Socket Programming menggunakan WinSock …………………. 27

BAB III PERANCANGAN SISTEM


3.1. Perancangan Sistem …………………………………………………….. 37
3.2. Konfigurasi Jaringan ……………………………………………………. 38
3.3. Perancangan Perangkat Lunak ………………………………………….. 39
3.3.1. Use case diagram ………………………………………………. 39
3.3.1.1. Use case pada aplikasi server …………………………... 39
3.3.1.2. Use case pada aplikasi client …………………………… 40
3.3.2. Flowchart ………………………………………………………. 41

xii
3.3.2.1. Flowchart aplikasi server ……………………………….. 41
3.3.2.2. Flowchart aplikasi client ………………………………... 45
3.3.2.3. Flowchart GUI Server …………………………………... 47
3.3.2.4. Flowchart GUI Client …………………………………... 48
3.3.3. Aplikasi Server………………………………………………….. 49
3.3.3.1. Proses pengambilan citra melalui webcam ……………... 49
3.3.3.2. Proses komunikasi dengan client ……………………….. 50
3.3.4. Aplikasi Client …………………………………………………. 53
3.3.4.1. Proses pengolahan citra ………………………………… 53
3.3.4.2. Proses komunikasi dengan server ………………………. 54
3.3.5. Perancangan GUI (Graphical User Interface) …………………. 54
3.3.5.1. Sketch Graphical User Interface ………………………... 55
3.3.5.2. Mock-up Graphical User Interface ……………………... 60
3.4. Perancangan perangkat keras …………………………………………… 65

BAB IV IMPLEMENTASI SISTEM DAN HASIL


4.1. Lingkungan Implementasi ……………………………………………… 66
4.1.1. Spesifikasi perangkat lunak …………………………………….. 66
4.1.2. Spesifikasi perangkat keras ……………………………………... 66
4.2. Implementasi API dalam aplikasi ………………………………………. 68
4.3. Implementasi timer control dalam aplikasi …………………………….. 72
4.4. Implementasi socket pada aplikasi ……………………………………… 76
4.5. GUI (Graphical User Interface) ………………………………………... 86

xiii
BAB V ANALISIS HASIL
5.1. Konfigurasi aplikasi …………………………………………………….. 93
5.2. Manfaat dan kemudahan ………………………………………………... 96
5.3. Keunggulan dan kekurangan …………………………………………… 97

BAB VI KESIMPULAN DAN SARAN


6.1. Kesimpulan ……………………………………………………………... 99
6.2. Saran ………………………………………………………….………… 100

Daftar Pustaka 101

xiv
DAFTAR TABEL

Tabel 2.1 Blok data pada bitmap 9


Tabel 3.1 Tabel protokol komunikasi WebCamLAN 55
Tabel 3.2 Tabel format komunikasi WebCamLAN 56
Tabel 5.1 Tabel Spesifikasi Aplikasi Server 93
Tabel 5.2 Tabel Spesifikasi Aplikasi Client 93
Tabel 5.3 Tabel Spesifikasi perangkat pendukung 94
Tabel 5.4 Tabel Hasil ujicoba 94

xvii
DAFTAR GAMBAR

Gambar 2.1 Sebuah web camera 6


Gambar 2.2 Papan sirkuit elektronik dan sensor gambar 7
Gambar 2.3 OSI Layer 17
Gambar 2.4 Ilustrasi network stack pada umumnya 17
Gambar 2.5 Connection oriented communication 19
Gambar 2.6 Connectionless oriented communication 19
Gambar 2.7 Kotak dialog New Project yang tampil saat menjalankan IDE
Visual Basic 20
Gambar 2.8 Lingkungan Visual Basic 6.0 dengan beberapa jendela yang
tampil 24
Gambar 2.9 Desain form Hello Visual Basic 25
Gambar 2.10 Aplikasi Hello Visual Basic yang telah dijalankan 27
Gambar 2.11 Desain form aplikasi Chat Client 28
Gambar 2.12 Desain form aplikasi Chat Server 33
Gambar 3.1. Konfigurasi jaringan 38
Gambar 3.2. Use Case Diagram aplikasi server 39
Gambar 3.3. Use Case aplikasi client 40
Gambar 3.4. Flowchart server secara keseluruhan 41
Gambar 3.5. Flowchart multiple connection pada server 42
Gambar 3.6. Flowchart pengambilan citra dari webcam 43
Gambar 3.7. Flowchart stream citra melalui network 44
Gambar 3.8. Flowchart client secara keseluruhan 45
Gambar 3.9. Flowchart menyimpan stream image menjadi file buffer 46
Gambar 3.9. Flowchart GUI server 47
Gambar 3.10. Flowchart GUI client 48
Gambar 3.11. Sketch form main aplikasi server 55
Gambar 3.12. Sketch form password aplikasi server 55
Gambar 3.13. Sketch form options aplikasi server 56
Gambar 3.14. Sketch form speed setting aplikasi server 56
Gambar 3.15. Sketch form source aplikasi server 57
Gambar 3.16. Sketch form about aplikasi server 57
Gambar 3.17. Sketch form main aplikasi client 58
Gambar 3.18. Sketch form password aplikasi client 58
Gambar 3.19. Sketch form setting aplikasi client 59
Gambar 3.20. Sketch form about aplikasi client 59
Gambar 3.21. Mock-up form main aplikasi server 60

xv
Gambar 3.22. Mock-up form password aplikasi server 60
Gambar 3.23. Mock-up form setting aplikasi server 61
Gambar 3.24. Mock-up form speed setting aplikasi server 61
Gambar 3.25. Mock-up form driver aplikasi server 62
Gambar 3.26. Mock-up form about aplikasi server 62
Gambar 3.27. Mock-up form main aplikasi client 63
Gambar 3.28. Mock-up form password Aplikasi Client 63
Gambar 3.29. Mock-up form setting aplikasi client 64
Gambar 3.30. Mock-up form about aplikasi client 64
Gambar 4.1 Aplikasi server ketika dijalankan 86
Gambar 4.2 Input authentifikasi password 87
Gambar 4.3 Window konfigurasi server 88
Gambar 4.4 Window format video 88
Gambar 4.5 Window Video Source Setting 89
Gambar 4.6 Window konfigurasi kecepatan transfer 89
Gambar 4.7 Window About 90
Gambar 4.8 Aplikasi client ketika dijalankan 91
Gambar 4.9 Window konfigurasi Auto Capture 92

xvi
BAB I

PENDAHULUAN

1.1. Latar Belakang

Tindak kejahatan pencurian dapat terjadi di mana saja, kapan saja dan

menimpa siapa saja termasuk sebuah badan usaha seperti warnet. Pencurian yang

dimaksud adalah pencurian terhadap perangkat keras yang dimiliki sebuah warnet,

seperti RAM, Hard Disk Drive, Processor dan lain-lain yang terdapat di setiap

komputer pengguna. Untuk mengatasi hal ini dipergunakanlah CCTV (Closed

Circuit Television) untuk dapat melakukan pengawasan (monitoring) terus

menerus ke setiap komputer.

Web Camera (webcam) merupakan perangkat keras (hardware) yang

mampu mengambil gambar (citra) dari obyek yang berada dalam jangkauan

pandangnya secara terus menerus. Selama ini webcam hanya dimanfaatkan

sebagai pelengkap dalam melakukan chatting dibeberapa protokol messenger dan

aplikasi PC Video Call terkenal seperti AOL Instant Messenger, MSN Messenger,

Skype, Windows Live Messenger dan Yahoo Messenger. Oleh beberapa protokol

messenger itu webcam dimanfaatkan sebagai sarana penangkap citra yang akan

dikirimkan kepada lawan chatting pada protokol yang sama, sehingga selama

melakukan chatting, user akan merasa seolah-olah ia berada dekat dengan lawan

chattingnya, karena ia dapat melihat lawan chattingnya secara langsung.

1
2

Berdasarkan fungsi dari webcam tersebut, maka penyusun akan

mencoba membuat perangkat lunak (software) yang akan berfungsi sebagai

kamera pengawas yang berjalan di jaringan komputer. Karena rata-rata saat ini

setiap komputer di warnet dan di perkantoran telah memiliki webcam, maka

software ini nanti diharapkan dapat menjadi sebuah solusi terhadap kedua masalah

yang telah dijabarkan di awal tadi. Software ini akan berjalan sebagai aplikasi

client-server, dimana komputer workstation menjalankan aplikasi server dan

komputer monitoring menjalankan aplikasi client. Server akan merespon request

client berupa pengiriman data citra yang telah ditangkap lalu diproses oleh server

kepada client. Proses pengambilan citra dan mengirimkannya secara periodik

inilah yang akan dilakukan terus menerus selama client melakukan request kepada

server. Selama proses inilah pengawasan akan dilakukan, data citra yang diterima

oleh client akan ditampilkan kembali menjadi citra yang dapat dilihat oleh mata.

1.2. Rumusan Masalah

Dari latar belakang masalah di atas, dapat dirumuskan suatu masalah

“menerapkan aplikasi remote webcam pada warnet ”

1.3. Batasan Masalah

Dalam batasan masalah ini, penyusun membatasi permasalahan yang

perlu dipecahkan, yaitu :

1. Workstation yang menjalankan aplikasi server tidak dapat

menggunakan webcam untuk aplikasi lain, seperti Yahoo! Mesenger.


3

2. Workstation yang menjalankan aplikasi server tidak dapat

menggunakan clipboard.

1.4. Tujuan Penelitian

Adapun tujuan dari penelitian ini adalah mengimplementasikan sebuah

software yang dapat menangkap citra dengan webcam lalu mengirimkanya ke

client secara periodik sehingga dapat dikembangkan sebagai media Dedicated

Cam Monitoring, maupun Personal Cam Monitoring.

1.5. Metodologi Penelitian

Beberapa tahapan yang dilakukan dalam menyelesaikan masalah di

atas adalah :

1. Studi pustaka.

Penyusun mencari literatur dan referensi di internet mengenai Image

Capture menggunakan webcam, komunikasi di jaringan dengan

menggunakan Windows Socket (Winsock) , fungsi-fungsi Windows

API (Aplication Program Interface) dan pemrograman Visual Basic.

2. Perancangan sistem.

Perancangan yang akan dibuat adalah perancangan secara umum

mengenai hardware dan software yang digunakan, perancangan

protokol komunikasi, perancangan alur prosesnya dan perancangan

aplikasi yang akan dibuat.

3. Uji coba mengcapture citra menggunakan webcam.


4

Ditahap ini, penyusun mencoba untuk membuat sebuah aplikasi

dengan pemrograman Visual Basic yang dapat mengcapture citra

dari webcam dan menyimpannya menjadi sebuah data.

4. Uji coba protokol komunikasi dalam jaringan LAN.

Ditahap ini, penyusun mencoba untuk membuat sebuah aplikasi

dengan pemrograman Visual Basic yang dapat melakukan

komunikasi antar komputer di dalam sebuah jaringan LAN.

Komunikasi ini dilakukan berdasarkan protokol yang telah

didefinikan.

5. Implementasi system.

Ditahap ini dilakukan pembuatan aplikasi keseluruhan berdasarkan

perancangan sistem.

1.6. Sistematika Penulisan

Secara garis besar, sistematika penulisan Tugas Akhir adalah sebagai

berikut :

BAB I PENDAHULUAN

Bab ini membahas tentang latar belakang penulisan tugas akhir,

batasan masalah, rumusan masalah, tujuan penulisan dan metodologi

penelitian tugas akhir.

BAB II LANDASAN TEORI

Bab ini berisi tentang landasan teori yang digunakan oleh penyusun

dalam membuat dan menyelesaikan tugas akhir.


5

BAB III PERANCANGAN SISTEM

Bab ini berisi tentang pembahasan rancangan sistem yang akan

dibangun.

BAB IV IMPLEMENTASI SISTEM

Bab ini berisi tentang pembahasan implementasi perancangan sistem

ke dalam bahasa pemrograman.

BAB V ANALISA HASIL IMPLEMENTASI

Bab ini berisi jawaban dari rumusan masalah yang telah dinyatakan

pada pendahuluan.

BAB VI KESIMPULAN

Bab ini berisi tentang kesimpulan yang dapat diambil dari analisa hasil

serta saran-saran untuk pengembangan program selanjutnya.


BAB II

LANDASAN TEORI

2.1. Web Camera (webcam)1

2.1.1. Pengertian

Web Camera (webcam) biasanya merupakan video camera adalah

perangkat keras (hardware) yang mampu mengambil gambar (citra) dari

obyek yang berada dalam jangkauan pandangnya secara terus menerus.

Gambar 2.1 Sebuah web camera

2.1.2. Teknologi

Pada umumnya webcam terdiri atas sebuah lensa, sensor gambar

dan sirkuit elektronik pendukung.Lensa yang sering digunakan adalah lensa

plastik yang dapat digerakkan maju-mundur untuk mengatur fokus kamera.

1
http://en.wikipedia.org/wiki/webcam
2
http://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Axis_network_webcam.jpg/180px-
Axis_network_webcam.jpg

6
7

Sensor gambar dapat berupa CMOS (Complementary Metal Oxide

Semiconductor) atau CCD (Charge Coupled Device).

Resolusi yang diadobsi webcam biasanya berada di wilayah VGA,

dengan rata-rata frame rate 25 frames per second sampai 30 frames per

second. Resolusi tertinggi yang dimiliki webcam saat ini adalah 1,3

megapixel.

Gambar 2.2 Papan sirkuit elektronik dan sensor gambar

2.2. Bitmap

.BMP atau .DIB (Device Independent Bitmap) adalah suatu format

pemetaan bit grafis yang digunakan secara internal oleh subsistem grafis OS/2 dan

Microsoft Windows (GDI), dan biasanya digunakan sebagai format file grafis

yang sederhana pada platform tersebut.

Citra secara umum disimpan dengan kedalaman warna dari 2 ( 1-bit), 16

( 4-bit), 256 ( 8-bit), 65,536 ( 16-bit), atau 16.7 juta ( 24-bit) warna ( bit

http://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Sweex_USB_webcam_PCB_with_w
ithout_lens_close_up.jpg/284px-Sweex_USB_webcam_PCB_with_without_lens_close_up.jpg
8

direpresentasikan sebagai bit per pixel). 8-bit citra dapat juga menjadi greyscale

sebagai ganti dari warna yang diindekskan. Alfa channel (untuk ketransparanan)

dapat disimpan dalam suatu file yang terpisah, serupa dengan sebuah citra

greyscale. Sebuah versi 32-bit dengan alfa channel yang terintegrasi telah

diperkenalkan oleh Windows XP dan digunakan di dalam sistem logon dan

temanya

2.2.1. Algoritma Penyimpanan

File BMP biasanya tidak terkompresi, sehingga memiliki ukuran

yang lebih besar dari format citra yang dikompres untuk citra yang sama.

Sebagai contoh, sebuah citra 800x600 24-bit memiliki ukuran hampir sebesar

1,4 megabyte. Untuk contoh yang lebih konkretnya, citra 1024x768 yang

diambil dengan menggunakan webcam memiliki ukuran sebesar 2,5 megabyte

jika disimpan dengan format BMP, sedangkan jika disimpan dengan format

JPG citra tersebut memiliki ukuran sebesar 74 kilobyte. Dengan demikian,

format BMP tidak cocok untuk pengiriman citra di Internet atau media

berkapasitas terbatas atau lambat.

Berdasarkan pada kedalaman warna, sebuah pixel di dalam citra

akan disimpan menggunakan satu atau lebih byte. Warna dari pixel akan

dihitung (sebagai contoh adalah Picture Viewer) berdasarkan pada nilai dari

byte dan nilai-nilai yang berhubungan yang dibaca dari palet warna.

Perkiraan ukuran untuk a n-bit ( a n warna) bitmap dalam byte dapat

dihitung sebagai :
9

lebar × tinggi × n
Ukuran file BMP ≈ 54 + 4 × 2 n + , di mana tinggi dan lebar
8

dalam satuan pixel.

Pada formula di atas, 54 adalah ukuran dari header file bitmap dan

4 × 2 n adalah ukuran dari palet warna. Perlu diingat bahwa ini hanyalah

perkiraan pada sebuah n-bit citra bitmap, meskipun dapat menjadi maksimum

2 n warna, sebuah citra tertentu dapat tidak menggunakan seluruh warnanya

itu. Selama palet warna hanya mendefinisikan warna-warna yang digunakan

oleh citra, ukuran sebenarnya palet warna akan lebih kecil dari 4 × 2 n .

Bitmap 8-bit atau kurang menggunakan palet warna, untuk bitmap 16-bit atau

lebih tinggi meniadakan bagian palet dari perhitungan.

lebar × tinggi × n
Ukuran dari file BMP ≈ 54 +
8

Menggunakan fungsi unit langkah u(x), kedua formula di atas

dapat dikombinasikan menjadi :

lebar × tinggi × n
Ukuran dari file BMP ≈ 54 + u (15 − n) × 4 × 2 n + ,
8

di mana u(x) = 1 jika x=0 dan sebaliknya.

2.2.2. Format file pada umumnya

File bitmap pada umumnya memiliki blok data dibawah ini :

Nama Blok Tujuan

Header Bitmap Menyimpan informasi umum mengenai file bitmap.

Informasi Bitmap Menyimpan detil informasi citra bitmap.


10

Palet Warna Menyimpan definisi warna yang sedang digunakan untuk

pengindekskan warna bitmap.

Bitmap Data Menyimpan citra sebenarnya tiap-tiap pixel.

Tabel 2.1 Blok data pada bitmap

Bagian di atas membahas mengenai data yang disimpan di dalam

file bitmap secara detil. Perlu diingat bahwa ini adalah standar format file

bitmap, beberapa citra bitmap dapat disimpan menggunakan format yang jauh

berbeda, tergantung pada aplikasi yang membuatnya.

2.3. JPEG (Join Photographics Expert Group)4

Dalam komputer, JPEG pada umumnya merupakan metode standar

kompresi untuk citra fotografi. Nama JPEG merupakan akronim dari Joint

Photographics Experts Group, yang merupakan nama dari sebuah komite yang

menciptakan standar. Kelompok yang berdiri pada tahun 1986, mengeluarkan

standar pada tahun 1992 yang kemudian disetujui pada tahun 1994 sebagai ISO

10918-1.

JPEG sendirilah yang menetapkan seluruh codec-nya, yang menjelaskan

bagaimana sebuah citra dikompres menjadi sebuah aliran byte dan didekompres

kembali menjadi citra juga format file yang digunakan untuk menyimpan aliran

tersebut. Metode kompresi biasanya kompresi yang merugi, dalam artian beberapa

4
http://en.wikipedia.org/wiki/JPEG
11

kualitas visual akan hilang dalam proses, meskipun ada beberapa variasi pada

garis dasar standar JPEG yang tidak akan merugi. Ada juga format progresif, yang

mana data dikompres dalam beberapa lewatan detil tertinggi secara progresif.

Format ini cukup ideal untuk citra yang besar yang akan ditampilkan selagi

didownload melalui koneksi yang lambat, memperbolehkan preview yang masuk

akal sebelum seluruh data diterima. Meskipun demikian progresif JPEG tidak

didukung secara luas.

2.3.1. Encoding

Banyak dari pilihan dalam JPEG yang standar tidak digunakan,

kebanyakan perangkat lunak citra menggunakan format JFIF yang lebih

sederhana ketika menciptakan file JPEG.

2.3.2. Color Space Transformations

Pertama, citra harus diubah dari RGB menjadi ruang warna yang

berbeda yang disebut YCbCr yang memiliki tiga komponen yaitu Y, Cb dan

Cr. Komponen Y merepresentasikan terang dari suatu pixel, komponen Cr dan

Cb menghadirkan krominan (dipecah menjadi komponen Red dan Blue).

YCbCr sama seperti ruang warna yang digunakan oleh PAL, MAC dan

transmisi televisi warna digital (tetapi bukan oleh NTSC, yang menggunakan

ruang warna yang yang serupa YIQ). Konversi ruang warna YCbCr

memungkinkan kompresi yang lebih besar untuk kualitas citra yang sama atau

kualitas citra yang lebih baik untuk kompresi yang sama.


12

Konversi ke YCbCr ini disebutkan dalam standar JFIF, dan dapat

digunakan untuk menghasilkan file JPEG sehingga memiliki kompatibilitas

yang tertinggi. Meskipun demikian banyak JPEG kualitas tinggi tidak

menerapkan langkah ini dan tetap menyimpannya dalam ruang warna sRGB,

di mana setiap warna dikompres dan dikuantitasi secara berbeda dengan

tingkatan kualitas yang sama.

2.3.3. Downsampling

Mata manusia dapat melihat lebih detil pada komponen Y daripada

Cb dan Cr. Menggunakan pengetahuan ini, encoder dapat didesain untuk

mengkompres citra dengan lebih efisien.

2.3.4. Compression Ratio dan Artifacts

Hasil perbandingan kompresi dapat bervariasi berdasarkan

kebutuhan untuk menjadi lebih atau kurang agresif dalam pembagian yang

digunakan pada fase kuantitasi. Kompresi 10 banding 1 biasanya

menghasilkan citra yang tidak dapat dibedakan oleh mata dengan citra yang

asli. Kompresi 100 banding 1 dimungkinkan, namun akan terlihat dengan jelas

pecahannya ketika dibandingkan dengan citra yang asli. Tingkatan kompresi

yang sesuai bergantung pada untuk penggunaan apa citra tersebut.


13

2.4. Windows API (Application Program Interface)

Microsoft Windows Application Program Interface (API) dalam

pemrograman memberikan kemampuan kepada program atau aplikasi untuk

mengeksploitasi kekuatan dari Windows5. Dengan menggunakan API ,

programmer dapat membangun sebuah aplikasi yang berjalan dengan baik pada

semua versi Windows selama berpedoman pada fitur-fitur dan kapabilitas yang

unik pada masing-masing versi.

Windows API terdiri dari berbagai macam fungsi kompleks untuk

berinteraksi langsung secara internal dengan Windows. Beberapa kategori

fungsional dari Windows API, yaitu :

• Manajemen dan Administrasi.

Memberikan fungsionalitas installasi, konfigurasi dan layanan aplikasi dan

sistem

• Diagnosa.

Memberikan fungsionalitas pemecahan masalah (troubleshoot) aplikasi atau

sistem, serta memonitor atau memantau performansi system.

• Multimedia dan grafis

Memberikan fungsionalitas untuk penyatuan teks terformat, grafis, audio

atau video, sehingga mampu untuk menampilkan konten grafis ke layar,

printer, atau perangkat keluaran lainnya.

5
http://msdn.microsoft.com/en-us/library/aa383723(VS.85).aspx
14

• Jaringan.

Memberikan fungsionalitas komunikasi antar aplikasi-aplikasi dalam sebuah

jaringan. Dapat memberikan kemampuan untuk membuat, mengatur akses

terhadap shared resource, seperti printer, directory pada sebuah jaringan.

• Keamanan.

Memberikan fungsionalitas untuk pengamanan sistem, seperti proteksi

password saat logon, kebebasan menentukan pengamanan terhadap semua

shared system object, kontrol hak akses, manajemen hak, dan audit

keamanan.

• Layanan Sistem.

Memberikan fungsionalitas untuk mengakses sumberdaya dan fitur-fitur

yang mendasari sistem operasi, seperti memori, file sistem, perangkat-

perangkat, proses dan thread. Akses yang dapat dilakukan dapat berupa

pengaturan ataupun pemantauan sumberdaya-sumberdaya yang dibutuhkan

agar dapat bekerja dengan baik.

• User Interface Windows

Memberikan fungsionalitas untuk membuat dan mengatur tampilan

antarmuka. Fungsi ini akan membuat dan menggunakan jendela-jendela

untuk ditampilkan di layar, meminta input dari pengguna, dan membuat

tugas lain yang dibutuhkan untuk mendukung interaksi dengan pengguna.

API (Application Program Interface) merupakan seluruh kumpulan dari

DLL (Direct Link Library) yang spesifik, yang memiliki fungsi-fungsi untuk

dapat dipanggil melalui beberapa bahasa pemrograman seperti Visual Basic,


15

C/C++, Java dan Delphi. Fungsi-fungsi utama API terdapat dalam 3 file-file DLL

sistem yang terletak pada semua sistem operasi berbasis Windows. Ketiga file-file

DLL tersebut adalah :

• User32.dll

Berfungsi untuk menangani semua yang berhubungan dengan antarmuka.

• Kernel32.dll

Berfungsi untuk menangani semua yang berhubungan dengan file-file dan

memori sistem.

• Gdi32.dll

Berfungsi untuk menangani semua yang berhubungan dengan grafis pada

sistem.

Microsoft® menggabungkan semua fungsi-fungsi API ke dalam DLL

sistem untuk mempermudah akses bagi pengembang perangkat lunak dalam

bahasa pemrograman apapun. Keuntungan dari menggunakan fungsi-fungsi API

adalah optimalisasi yang sudah tertanam pada masing-masing fungsi tersebut,

sehingga akan jauh lebih cepat dalam pemrosesan data ketimbang menggunakan

fungsi standar yang tersedia di Visual Basic. Akan tetapi pemanggilan dan

eksekusi fungsi API tersebut akan membutuhkan waktu juga, sehingga lebih

dianjurkan untuk menggunakan fungsi API yang tidak terdapat pada fungsi

standar Visual Basic ketika kita akan melakukan sebuah tugas khusus.

Pada Visual Basic, sangat dimungkinkan untuk menggunakan DLL

selain 3 DLL di atas, selama kita mengerti bagaimana deklarasi untuk mengakses

fungsi tersebut. Pengembang DLL tersebut harus memberikan dokumentasi yang


16

mendetail yang akan memberikan penjelasan kepada pengembang bagaimana

caranya membuat deklarasi API untuk menggunakan fungsi yang terdapat di

dalam DLL tersebut.

API dapat digunakan untuk melakukan tugas-tugas di Windows seperti

mematikan komputer, merestart sistem, hingga menginstall printer. Karena

sudah selayaknya sebuah sistem operasi bekerja secara multithread, maka

beberapa program pun dapat mengakses sebuah fungsi API yang sama dalam

waktu yang bersamaan juga.

2.5. Windows Socket (Winsock)

Winsock digunakan untuk membuat aplikasi yang akan mengakses

fungsi-fungsi level bawah dari Transmission Control Protocol (TCP/IP), secara

metafora memperbolehkan untuk tersambung ke dalam sebuah jaringan. Sebuah

socket hampir sama dengan antarmuka jaringan perangkat keras yang digunakan

untuk komunikasi interproses melalui jaringan di mana proses tersebut

berkomunikasi dengan remote system melalui protokol transport (TCP atau UDP).

Spesifikasi Socket API Windows menggambarkan dua alat penghubung:

API yang digunakan oleh pengembang aplikasi, dan Service Provider Interface

(SPI), yang menyediakan arti bagi pengembang perangkat lunak jaringan untuk

menambahkan modul protokol baru ke dalam sistem . API menjamin bahwa suatu

aplikasi penyelarasan akan berfungsi dengan tepat dengan suatu implementasi

protokol penyelaras dari vendor perangkat lunak jaringan apapun. Melalui


17

penggunaan yang sesuai dari API, suatu aplikasi Winsock dapat bekerja pada

berbagai implementasi Winsock dan protokol transport jaringan.

Jaringan dibuat dari beberapa lapisan yang didasarkan pada model

lapisan OSI. TCP/IP adalah protokol jaringan berada pada lapisan 3 dan 4 pada

model OSI. Sebuah protokol jaringan menyediakan layanan seperti addressing,

data transport, routing dan logical connection melalui jaringan. Dua komputer

harus menggunakan protokol jaringan jika program yang berjalan pada komputer

tersebut ingin berkomunikasi. Protokol jaringan yang umum lainnya adalah IPX

pada Novell, 3Com pada IBM, NetBIOS pada Windows, DECNet pada Digital

dan AppleTalk pada Apple.

Gambar 2.3 OSI Layer

Gambar 2.4 Ilustrasi network stack pada umumnya

6
http://tangentsoft.net/wskfaq/glossary.html
7
http://tangentsoft.net/wskfaq/glossary.html
18

Pada saat ini Winsock telah mencapai versi 2.0. Versi ini merupakan

pengembangan dari versi pendahulunya yaitu versi 1.1. Versi 2.0 memberikan

dukungan untuk beberapa protokol transport, meskipun versi 1.1 tidak terbatas

pada TCP/IP saja Versi 2.0 juga mendukung prakarsa teknis seperti Quality of

Service (QoS) dan multicasting. Teknologi ini akan meningkat seiring dengan

permintaan bandwidth. Sebagai contoh QoS membolehkan sebuah program video

conferencing untuk mencadangkan sejumlah tertentu bandwidth agar transfer file

yang tiba-tiba sebagai contoh, tidak menyebabkan videonya menjadi patah-patah

karena kekurangan bandwidth. Multicasting memperbolehkan program video

conferencing untuk mengirimkan aliran video dan audio ke banyak peserta

konferensi tanpa menduplikasi data lagi. Winsock 2.0 bekerja dengan mekanisme

high efficiency I/O overlapped Win32 sejak Windows NT mendukung I/O overlap

di dalam kernel yang memberikan peningkatan kecepatan yang tinggi. Winsock

2.0 juga memperbolehkan Layered Service Provider (LSP) untuk yang membuka

banyak hal seperti plug-ins keamanan: drop in, say, dan SSL.

Winsock lebih populer digunakan dalam aplikasi client-server yang

menyediakan dua tipe layanan, yaitu connection oriented dan connectionless

oriented. Layanan connection oriented diimplementasikan pada TCP, di mana

koneksi antar titik dalam jaringan harus tersambung terlebih dahulu sebelum

terjadi pertukaran data atau informasi.


19

Gambar 2.5 Connection oriented communication

Gambar 2.6 Connectionless oriented communication

8
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/rzab6/rxab6500.gif
9
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/rzab6/rxab6300.gif
20

2.6. Pemrograman menggunakan Visual Basic 6.0

2.6.1. Integrated Development Environment (IDE)10

IDE memberi kita semua yang dibutuhkan untuk menciptakan

aplikasi-aplikasi handal, untuk menulis kode , mengetes dan kemudian

memperbaiki, lalu menciptakan file yang dapat dieksekusi oleh mesin. File-

file ini berdiri sendiri di luar lingkungan dan karenanya dapat dikirimkan

kepada pengguna untuk dieksekusi di mesin mereka tanpa perlu menginstall

Visual Basic.

Setelah kita melakukan instalasi Visual Basic 6.0 dan memanggil

program Visual Basic untuk pertama kali, maka kita akan diminta untuk

memilih tipe project yang akan diciptakan. Pilih Standard EXE sebagai awal

untuk menciptakan aplikasi yang dapat dijalankan di mesin.

Gambar 2.7 Kotak dialog New Project yang tampil saat menjalankan

IDE Visual Basic

10

Programming Visual Basic 6.0, Balena Francesco, Microsoft® Press, 1999


Advanced Microsoft Visual Basic 6.0, The Mandelbrot Set, Microsoft® Press, 1998
Microsoft® Win32® Programmer's Reference
21

Setelah memilih Standard EXE maka Visual Basic akan

menampilkan jendela IDE yang terdiri dari beberapa komponen yaitu :

• Project Window

Memberikan pandangan terhadap semua modul-modul yang dimiliki

oleh aplikasi kita. Kita dapat melihat beberapa modul-modul yang

dikelompokkan berdasar pada tipenya, lalu melihat kode disetiap

modul atau objek yang berhubungan dengan melakukan double klik.

• Form Designer

Digunakan untuk mendesain antarmuka aplikasi. Melalui Form

Designer kita dapat mengatur posisi dan ukuran kontrol objek di dalam

form. Aplikasi dapat memiliki banyak form, dan hanya dapat dibuka

satu Form Designer dalam waktu bersamaan.

• Toolbox Window

Toolbox window memiliki satu set kontrol objek yang secara default

telah dimasukkan pada Toolbox dan tidak dapat dihilangkan, kontrol

objek inilah yang nanti dapat diletakkan ke dalam form. Penambahkan

kontrol Microsoft ActiveX objek dengan melakukan klik kanan pada

Toolbox lalu memilih Components pada pop-up yang muncul,

sehingga akan muncul kembali jendela Component. Pilih component

yang akan ditambahkan lalu tekan tombol OK untuk menerapkannya.


22

• Code Window

Digunakan untuk menuliskan kode yang berhubungan dengan form

atau objek lain di dalam aplikasi. Beberapa Code Window ditampilkan

pada waktu yang bersamaan.

• Properties Window

Menampilkan semua properti dari objek yang sedang dipilih, dan

memberikan kemampuan untuk mengeditnya. Kita dapat memberikan

nama dari form yang kita pilih dengan mengedit nilai pada property

Caption.

• Color Palette

Jendela Color Palette dapat memberikan akses cepat untuk

memberikan warna ke sebuah objek, seperti kontrol yang sedang

dipilih pada Form Designer.

• Form Layout

Form Layout akan menunjukkan bagaimana form yang dipilih akan

tampil saat program berjalan. Kita bisa mendrag form ke tempat yang

kita inginkan di layar selama program berjalan.


23

• Immediate Window

Immediate Window memberikan kemampuan kepada kita untuk

memasukkan perintah atau ekspresi Visual Basic dan melihat hasilnya

menggunakan perintah Print.

• Object Browser

Object browser memberikan kemampuan untuk mengeksplorasi

library-library luar agar dapat mempelajari tentang objek yang

ditampilkan beserta propertinya, metode-metode dan event-event nya.

Object Browser juga membantu secara cepat melompat ke prosedur

apapun di dalam modul apapun pada aplikasi.

• Locals Window

Locals window hanya akan aktif ketika program dijalankan, yang akan

menampikan list dari nilai semua variabel modul atau prosedur lokal.

• Watches Window

Watches Window memampukan untuk memonitor nilai dari sebuah

variabel atau ekspresi secara terus menerus. Melalui Watches Window,

eksekusi program dapat dihentikan ketika nilai ekspresi yang dipilih

bernilai True atau saat nilainya berubah.


24

• Call Stack Window (tidak terlihat pada gambar)

Call Stack Window hanya akan tampil saat melakukan break pada

program yang berjalan dan menekan shortcut Ctrl+L. Call Stack

Window akan menampilkan semua prosedur yang menunggu prosedur

yang sedang berlangsung selesai.

Gambar 2.8 Lingkungan Visual Basic 6.0 dengan beberapa jendela yang

tampil
25

2.6.2. Program Visual Basic yang sangat sederhana

Membuat program dengan menggunakan Visual Basic tidaklah

sulit. Berikut ini penyusun akan mencoba memberikan contoh beserta

keterangan yang diperlukan.

Aplikasi Hello Visual Basic.

Langkah-langkah yang diperlukan untuk membuat aplikasi ini akan

dijelaskan sebagai berikut:

1. Buatlah sebuah form dengan menggunakan Form Designer pada

Visual Basic, sehingga terlihat seperti gambar di bawah ini.

Gambar 2.9 Desain form Hello Visual Basic

Agar menghasilkan form seperti di atas perlu

ditambahkan beberapa komponen yaitu kontrol objek Label dan

kontrol objek Button.

Pilih icon pada Toolbox lalu klik kiri pada form dan

lakukan drag untuk menambahkan objek Label. Untuk mengedit


26

teks dari Label tersebut dilakukan dengan mengganti Caption

Label pada Properties Window menjadi “Hello Visual Basic”.

Pilih icon pada Toolbox lalu lakukan cara yang sama

seperti di atas untuk menambahkannya ke dalam form. Untuk

mengedit teks dari Button tersebut dilakukan dengan mengganti

Caption Button pada Properties Window menjadi “Exit”. Untuk

mengubah nama dari kontrol objek tersebut dilakukan dengan

mengubah Name Button pada Properties Window menjadi

“cmdExit”.

2. Agar tombol pada form tersebut dapat digunakan ketika program

dieksekusi, maka perlu ditambahkan baris kode berikut ke dalam

aplikasi

Private Sub btnExit_Click()


'baris berikut ini akan dilakukan ketika dilakukan
penekanan
'pada tombol Exit dengan menggunakan mouse
'fungsi unload objek akan dilakukan sehingga proses
akan
'meng-unload form aplikasi untuk keluar dari
aplikasi.
Unload Me ‘ memanggil fungsi unload
End Sub

3. Untuk mencoba menjalankan aplikasi ini dapat dilakukan dengan

memilih “Start With Full Compile” pada menu Run Visual Basic

atau dengan menggunakan shortcut Ctrl+F5.


27

4. Hasil saat menjalankan aplikasi ini dapat dilihat pada gambar

berikut ini

Gambar 2.10 Aplikasi Hello Visual Basic yang telah dijalankan

2.6.3. Socket Programming menggunakan WinSock

Winsock Chat client-server.

Langkah-langkah yang diperlukan untuk membuat aplikasi ini akan

dijelaskan sebagai berikut.

Membuat aplikasi client.

1. Buat form client dengan menggunakan Form Designer pada Visual

Basic sehingga terlihat seperti gambar di bawah ini.


28

11

Gambar 2.11 Desain form aplikasi Chat Client

Tambahkan dua buah Label ke dalam form dan edit

properties text-nya secara berurutan menjadi “Remote Host IP :”

dan “Remote Host Port :”.

Tambahkan empat buah TextBox ke dalam form, edit

properties name-nya secara berurutan menjadi “TxtIP”, “TxtPort”,

“TxtLog” dan “TxtSend”.

11
http://www.phoenixbit.com/site/tutorials/Programming/Visual%20Basic/winsock1/WinsockSour
ce.zip
29

Tambahkan tiga buah CommandButton ke dalam form,

edit properties name-nya secara berurutan menjadi “btnConnect”,

“btnExit” dan “btnSend”.

Kontrol objek Winsock perlu ditambahkan pada program

ini. Untuk menambahkan kontrol ini dilakukan dengan melakukan

klik kanan pada Toolbox lalu pilih “Component” dan cari

“Microsoft Winsock Control 6.0”.

Pilih “Microsoft Winsock Control 6.0” lalu klik OK.

2. Sekarang penyusun memiliki form, tetapi form tersebut tidak

memiliki kode di dalamnya, hanya komponen-komponen saja,

yaitu CommandButton, TextBox dan Winsock ActiveX. Penyusun

akan memulai menuliskan kode yang diperlukan untuk tombol

“Connect” agar tombol tersebut dapat bekerja.

Private Sub btnConnect_Click()


On Error GoTo t ‘jika terjadi error maka lompat ke t
'sock1 adalah nama Winsock ActiveX Control

sock1.Close 'penyusun menutupnya karena akan mulai


untuk terkoneksi

'txtIP adalah textbox penyimpan host IP


sock1.RemoteHost = txtIP 'mengeset host tujuan
ke IP yang ditulis pada textbox

'txtPort adalah textbox penyimpan Port


sock1.RemotePort = txtPort 'mengeset port yang
diinginkan untuk terkoneksi

'(server harus listening pada port ini juga)

sock1.Connect 'mencoba untuk terkoneksi


Exit Sub
t:
MsgBox "Error : " & Err.Description, vbCritical
‘menampilkan pesan kesalahan beserta deskripsinya
End Sub
30

Yang dilakukan di sini adalah menutup Winsock sebelum

mencoba untuk terkoneksi lalu mengeset parameter Winsock yang

dibutuhkan (IP dan Port). Setelah itu memanggil fungsi connect

yang dimiliki oleh Winsock.

3. Sekarang penyusun selesai pada kode di dalam CommandButton

Connect. Kontrol Winsock memiliki sebuah event yang disebut

_Connect, dimana event ini akan terpicu ketika koneksi yang

dilakukan sukses. Yang dapat dilakukan oleh penyusun adalah

membersihkan chat buffer dan meletakkan pesan yang mengatakan

bahwa koneksi ke host tujuan sukses.

Private Sub sock1_Connect()


'txtLog adalah textbox yang digunakan sebagai chat
buffer
'sock1.RemoteHost mengembalikan hostname( atau IP)
dari host
'sock1.RemoteHostIP mengembalikan IP dari host
‘menambahkan informasi bahwa sedang terkoneksi ke
dalam chat buffer
txtLog = "Connected to " & sock1.RemoteHostIP
End Sub

4. Kegagalan dalam melakukan koneksi ke host dapat disebabkan

oleh beberapa alasan seperti IP yang tidak valid, host tidak

menerima koneksi pada port tertentu (karena port host tersebut

tertutup), error di koneksi internet (terkena firewall atau koneksi

yang lost), host mati atau offline dan lain-lain. Untuk menangani

error ini, penyusun perlu untuk menggunakan event _error. Di sini

akan digunakan error number dan descriptionnya.


31

Private Sub sock1_Error(ByVal Number As Integer,


DescriptionAs String, ByVal Scode As Long,ByVal
Source As String, ByVal HelpFileAs String, ByVal
HelpContext As Long, CancelDisplay As Boolean)

'even ini digunakan untuk menangani segala error yang


terjadi saat menggunakan Winsock.
'Number memberikan kode error pada erroryang terjadi
'Description memberikan nilai string dengan
penjelasan sederhana mengenai error yang terjadi
'menambahkan kode error yang terjadi ke dalam chat
buffer.
txtLog = txtLog & "*** Error : " & Description &
vbCrLf

'mencoba untuk menutup koneksi Winsock


sock1_Close
End Sub

5. Ada event yang akan terpicu ketika koneksi tertutup, event ini

adalah _Close. Diperlukan penanganan terhadap event close yang

terjadi untuk memastikan bahwa Winsock benar-benar telah

tertutup.

Private Sub sock1_Close()


'menangani penutupan koneksi
sock1.Close ‘ tutup koneksi
End Sub

6. Pengiriman data merupakan bagian yang penting dalam koneksi

karena melalui pengiriman data inilah komunikasi dapat terjadi.

Pengiriman data string kepada host dapat dilakukan dengan

menggunakan fungsi SendData. Berikut ini adalah kode yang

diperlukan agar CommandButton Send dapat bekerja.

Private Sub btnSend_Click()


On Error GoTo t
'penyusun ingin mengirimkan nilai dari TextBox
txtSend
sock1.SendData txtSend 'kirimkan string tersebut ke
32

host

'penanganan error
'(sebagai contoh, penyusun akan menangani error
ketika akan mengirimkan data saat belum terkoneksi)
Exit Sub
t:
MsgBox "Error : " & Err.Description
sock1_Close 'tutup koneksi
End Sub

7. Penerimaan data sama pentingnya dengan pengiriman data. Yang

perlu dilakukan adalah menggunakan fungsi Winsock GetData di

dalam event _DataArrival yang akan terpicu setiap kali ada data

yang diterima. Berikut ini adalah kode yang menangani data yang

masuk lalu menambahkannya ke dalam chat buffer.

Private Sub sock1_DataArrival(ByValbytesTotal As


Long)
'penyusun menggunakan fungsi GetData ayang akan
mengembalikan data yang dimiliki oleh Winsock

Dim dat As String 'variabel dat bertipe String untuk


menyimpan data
sock1.GetData dat, vbString 'menyimpan data yang baru
didapatkan Winsock ke dalam variable dat

'menambahkan pesan baru ke dalam chat buffer


txtLog = txtLog & "Server : " & dat & vbCrLf
End Sub

Membuat Aplikasi Server

Secara mendasar aplikasi server tidak jauh berbeda dengan aplikasi

client, penyusun hanya akan menjabarkan perbedaan nya saja.

1. Buat form client dengan menggunakan Form Designer pada Visual

Basic sehingga terlihat seperti gambar di bawah ini.


33

12

Gambar 2.12 Desain form aplikasi Chat Server

Tambahkan sebuah buah Label ke dalam form dan edit

properties text-nya menjadi “Listening on Port :”.

Tambahkan tiga buah TextBox ke dalam form, edit

properties name-nya secara berurutan menjadi “TxtPort”, “TxtLog”

dan “TxtSend”.

Tambahkan tiga buah CommandButton ke dalam form,

edit properties name-nya secara berurutan menjadi “btnListen”,

“btnExit” dan “btnSend”.

12
http://www.phoenixbit.com/site/tutorials/Programming/Visual%20Basic/winsock1/WinsockSour
ce.zip
34

Kontrol objek Winsock perlu ditambahkan pada program

ini. Untuk menambahkan kontrol ini dilakukan dengan melakukan

klik kanan pada Toolbox lalu pilih “Component” dan cari “Microsoft

Winsock Control 6.0”.

Pilih “Microsoft Winsock Control 6.0” lalu klik OK.

2. Perbedaan pertama adalah dalam koneksi. Pada aplikasi client, harus

diset remote IP dan Port yang akan digunakan, lalu mencoba untuk

melakukan koneksi. Aplikasi server hanya perlu untuk mengeset

local port lalu listening pada port tersebut, yang berarti bahwa

program memonitor setiap permintaan koneksi yang terjadi oleh

client pada port yang telah didefinisikan.

Berikut ini adalah kode yang harus dituliskan untuk

tombol “Start Listening”.

Private Sub btnListen_Click()


On Error GoTo t
'sock1 adalah nama dari kontrol Winsock ActiveX yang
penyusun gunakan

sock1.Close 'tutup koneksi, saat socket sebelumnya


telah listening

'txtPort adalah TextBox yang berisi Port Number


sock1.LocalPort = txtPort 'mengeset Port yang
penyusun inginkan untuk listening ( Client akan
terkoneksi pada port ini )

sock1.Listen 'memulai Listening


Exit Sub
t:
MsgBox "Error : " & Err.Description, vbCritical
End Sub
35

3. Perbedaan berikutnya adalah penanganan koneksi, di mana client

memiliki event _Connect yang akan dipicu ketika koneksi sedang

berlangsung. Pada server perlu untuk menerima permintaan koneksi

dari client sebelum koneksi selesai. Untuk melakukan hal ini,

digunakan fungsi Accept saat event _ConnectionRequest terpicu oleh

permintaan client untuk terkoneksi dengan host. Berikut ini adalah

kode yang diperlukan untuk melakukannya.

Private Sub sock1_ConnectionRequest(ByVal requestID As


Long)
'txtLog adalah TextBox yang digunakan sebagai Chat
Bufer

'event ini terpicu saat client mencoba untuk


terkoneksi kepada host
'server harus menerima permintaan koneksi tersebut
agar konektifitas antara client dengan server dapat
terjadi.

'hanya mengecek state dari Winsock


If sock1.State <> sckClosed Then sock1.Close

‘menerima koneksi client sehingga client dan server


dapat saling bertukar data
sock1.Accept requestID

‘menambahkan pesan ke dalam Chat Buffer


txtLog = "Client Connected. IP : " &
sock1.RemoteHostIP & vbCrLf
End Sub

Jika telah selesai memasukkan seluruh kode yang diperlukan ke

dalam setiap form server dan form client, maka dapat menggunakan shortcut

Ctrl+F5 untuk mencoba menjalankan masing-masing aplikasi tersebut dengan

otomatis melakukan compile terlebih dahulu.


36

Untuk menghasilkan file executable yang nantinya dapat

dijalankan tanpa harus menggunakan compiler Visual Basic, dapat

menggunakan “Make Project1” pada menu “File”.


BAB III

Perancangan Sistem

3.1. Perancangan Sistem

Aplikasi WebCamLAN ini berfungsi untuk melakukan monitoring

terhadap setiap workstation yang memiliki webcam dan terintegrasi aplikasi

WebCamLAN server. Aplikasi WebCamLAN client dan WebCamLAN server

akan saling berkomunikasi melalui media jaringan LAN (Local Area Network).

Mengapa berjalan pada jaringan LAN, apakah tidak dapat berjalan pada jaringan

Internet ? Sebenarnya secara kemampuan aplikasi ini dapat berjalan pada jaringan

Internet, akan tetapi dikarenakan keterbatasan lebar pita data (bandwidth) yang

dimiliki setiap komputer berbeda dan kecepatan transfer data yang dibutuhkan

oleh aplikasi ini cukup tinggi, maka ada kemungkinan bahwa akan terjadi jeda

waktu penampilan citra yang cukup lama, sehingga citra akan ditampilkan dengan

terputus-putus.

Aplikasi ini adalah aplikasi yang bersifat client-server, yang mana

komputer workstation akan menjalankan aplikasi server, dan komputer

monitoring akan menjalankan aplikasi client. Pertama-tama client akan

melakukan request koneksi kepada server, lalu server akan meminta autentifikasi

berupa password kepada client. Jika password yang diterima sesuai dengan

password yang tersimpan di server, maka koneksi akan dilanjutkan dengan

pengiriman data citra yang telah ditangkap oleh server kepada client. Setiap

alamat IP yang melakukan request koneksi, hasil dari autentifikasi password dan

37
38

waktu terjadinya akan dicatat oleh server dan disimpan ke dalam file log untuk

dapat dilakukan tracing terhadap status webcam. Proses pengambilan citra oleh

server dan mengirimkannya ke client akan dilakukan terus menerus selama tidak

ada request untuk menghentikan proses oleh client atau koneksi yang terputus.

3.2. Konfigurasi Jaringan

Konfigurasi jaringan yang digunakan dalam penelitian ini adalah

sebagai berikut :

7x 8x 9x 10 x 11x 12 x 7x 8x 9x 10x 11 x 12 x
Ethernet

C
7 8 9 101112

A 1 23 45 6 1x 2x 3x 4x 5x 6x 1x 2x 3x 4x 5x 6x
A B

Gambar 3.1. Konfigurasi jaringan


39

Sistem operasi yang digunakan pada gateway router adalah Linux

berbasiskan text. Sistem operasi pada workstation dan monitoring server adalah

Microsoft Windows XP SP2, dengan Visual Basic Runtime versi 6.0 .

3.3. Perancangan Perangkat Lunak1

3.3.1. Use case diagram 2

3.3.1.1. Use case pada aplikasi server

Gambar 3.2. Use Case Diagram aplikasi server

Programming Visual Basic 6.0, Balena Francesco, Microsoft® Press, 1999


Advanced Microsoft Visual Basic 6.0, The Mandelbrot Set, Microsoft® Press, 1998
Microsoft® Win32® Programmer's Reference
Win32 API Reference for HLA
2
UML 2.0 in a Nutshell, Pilone Dan, Pitman Neil, O'Reilly, 2005
40

3.3.1.2. Use case pada aplikasi client

>>
de
clu
in
<<

Gambar 3.3. Use Case aplikasi client


41

3.3.2. Flowchart

3.3.2.1. Flowchart aplikasi server

Gambar 3.4. Flowchart server secara keseluruhan

Secara keseluruhan, aplikasi server akan mulai listening pada port yang

sudah ditentukan saat aplikasi server dijalankan. Ketika mendapatkan

request untuk connect dari client, aplikasi server akan mulai mengambil

citra melalui webcam lalu mengirimkan citra tersebut ke client proses

pengambilan citra dan mengirimkan ke client tersebut akan dilakukan

secara terus menerus sampai koneksi terputus yang bias dikarenakan

client memutuskan koneksi atau gangguan koneksi.


42

Start

Port in use?

false

insocket[int]
int index
index=0

listening state

false

connection
request ?

true
true

true insocket[index] accept remote host

index++

index < 10

false
end

Gambar 3.5. Flowchart multiple connection pada server

Pada proses ini, socket sisi server akan melemparkan requestID dari

connection request sisi client kepada socket lain pada sisi server yang

sedang menganggur atau free lalu membuat socket tersebut yang akan

berkomunikasi dengan sisi client. Proses penerimaan requestID

tersebutlah yang akan dilakukan secara terus menerus selama terjadi

request connect dari sisi client hingga mencapai jumlah index port yang

telah dialokasikan oleh server.


43

Start

Capture device Connect to capture


true
installed ? device

false
Create capture
preview

Capture device
Paste clipboard to
PictureBox

Export PictureBox to
JPG Stream

end

Gambar 3.6. Flowchart pengambilan citra dari webcam

Sebelum mengambil citra dari webcam, aplikasi server akan mengecek

keberadaan webcam terlebih dahulu dan akan meminta pengguna untuk

memilih webcam yang akan digunakan. Ketika pengguna telah

memasukkan webcam secara spesifik, maka aplikasi server akan

memulai koneksi ke webcam lalu membuat preview dari citra webcam,

mengkopi citra ke clipboard dan memasukkannya ke picturebox untuk

nantinya diexport berupa citra berformat JPG.


44

Start

File stream exist ?

Temp string

Open file handle

Temp = read line per


EOF false
buffer size
false
true

Close file handle Is connected

true

Send temp via socket

end false

Gambar 3.7. Flowchart stream citra melalui network

Aplikasi server akan mengecek keberadaan image stream terlebih

dahulu, ketika image stream tersebut ada, maka aplikasi server akan

membaca keseluruhan file tersebut dan menyimpannya ke dalam

memory yang lalu dikirimkan kepada aplikasi client.


45

3.3.2.2. Flowchart aplikasi client

Gambar 3.8. Flowchart client secara keseluruhan

Aplikasi client akan mencoba untuk connect ke server pada port yang

telah ditentukan hingga satuan waktu tertentu, jika permintaan connect

ke server diterima maka aplikasi client akan mulai menerima paket data

stream dari server hingga client meminta untuk memutuskan koneksi

atau terjadi gangguan pada koneksi. Jika permintaan koneksi ke server

ditolak atau timeout, maka aplikasi client akan menutup port yang

digunakan dan kembali ke state awal.


46

Start

Connected?

true

Temp string

Temp = buffer from


socket

Open file handle

false false
Write temp to file

Latest buffer
package

true

Close file handle

end

Gambar 3.9. Flowchart menyimpan stream image menjadi file

buffer

Untuk menyimpan image stream yang telah diterima dari server, aplikasi

client akan menerima satu persatu data stream buffer dari server lalu

menuliskannya ke dalam file image stream hingga aplikasi client

menerima acknowledgment bahwa buffer yang dikirimkan sebelumnya

merupakan buffer terakhir dari keseluruhan image stream yang

dikirimkan secara berurutan.


47

3.3.2.3. Flowchart GUI Server

Gambar 3.9. Flowchart GUI server


48

3.3.2.4. Flowchart GUI Client

Gambar 3.10. Flowchart GUI client


49

3.3.3. Aplikasi Server

Inti dari software ini berada pada sisi server. Kegagalan proses akan

mengakibatkan keseluruhan aplikasi tidak dapat berjalan dengan semestinya,

maka diharapkan aplikasi server dapat melakukan auto recovery terhadap

setiap kegagalan proses yang terjadi. Ada dua proses berbeda yang dilakukan

oleh aplikasi server, yaitu :

• Proses pengambilan citra melalui webcam yang meliputi

pengambilan citra dan pengolahan citra.

• Proses komunikasi dengan client yang meliputi autentifikasi,

enkripsi-dekripsi data dan pengiriman citra sebagai data.

3.3.3.1. Proses pengambilan citra melalui webcam.

Proses ini memanfaatkan library-library yang dimiliki oleh windows

melalui fungsi-fungsi API (Aplication Program Interface) yaitu user32.dll

dan kernel32.dll. Aplikasi server akan mencari driver control webcam jika

pada komputer ditemukan webcam. Lalu dengan driver tersebut aplikasi

server akan melakukan koneksi ke webcam dan mulai untuk menampilkan

jendela preview jika koneksi dapat dilakukan. Untuk dapat melakukan

capture citra yang ada pada jendela preview maka digunakanlah fungsi

sendmessages() pada library user32. Hasil capture citra tersebut akan

diletakkan dalam sebuah control object picture berupa citra yang berformat

BMP (bitmap) dan memiliki ukuran file yang cukup besar. Melalui control

object picture citra yang akan dikirimkan itu dapat dilihat secara visual.

Karena ukuran file citra yang cukup besar untuk ditransferkan melalui
50

jaringan secara terus-menerus, maka perlu diubah formatnya menjadi JPEG

untuk mendapatkan ukuran file citra yang kecil namun tetap memiliki

kualitas yang baik. Hasil dari pengubahan tersebut yang akan disimpan

menjadi file buffer untuk dapat digunakan oleh proses berikutnya, yaitu

komunikasi.

Proses pengcapturean dan proses penyimpanan berikut dengan

pengubahan format citra akan dilakukan secara periodik dengan

menggunakan control object timer.

3.3.3.2. Proses komunikasi dengan client.

Proses ini memanfaatkan control object winsock untuk dapat

berkomunikasi dengan aplikasi client melalui IP (Internet Protocol). Untuk

membentuk sebuah komunikasi yang baik dan relevan antara server dengan

client, maka dibuatlah sebuah protokol komunikasi tersendiri yang dapat

dilihat pada tabel berikut :

NO Paket Data Keterangan

1 "#i_t#" Digunakan sebagai tanda bahwa paket data

yang dikirimkan adalah paket data perintah

dan akan diterjemahkan sebagai perintah.

2 "#invisible#" Digunakan sebagai tanda bahwa paket data

yang dikirimkan adalah paket data

autentifikasi yang telah dienskripsi dengan

sandi tertentu.

3 "#dat#" Digunakan sebagai tanda bahwa paket data

yang dikirimkan adalah paket data citra, yang


51

akan diolah kembali oleh client sehingga

dapat dilihat oleh mata.

Tabel 3.1. Tabel protokol komunikasi WebCamLAN

Selain menggunakan protokol komunikasi seperti yang telah

disebutkan di atas, ditetapkan pula format dari protokol komunikasi, yang

dapat dilihat pada tabel berikut :

NO Format Paket Keterangan

1 "#i_t#start#i_t#" Perintah untuk menghidupkan kamera.

"#i_t#stop#i_t#" Perintah untuk mematikan kamera.

"#i_t#open#i_t#" Perintah untuk meminta koneksi.

"#i_t#close#i_t#" Perintah untuk menutup koneksi.

"#i_t#reject#i_t#" Informasi bahwa autentifikasi gagal.

"#i_t#accept#i_t#" Informasi bahwa autentifikasi berhasil.

2 "#invisible#[encrypted Encrypted data akan berisi password yang

data]#invisible#" telah dibungkus oleh paket auth dengan

format "auth!password!auth", sehingga jika

dekripsi terhadap encrypted data berhasil

maka akan memberikan hasil berupa

"auth!password!auth". yang kemudian akan

diekstrak menjadi "password" untuk

mendapatkan password yg sesungguhnya.

3 "#dat#[data Data yang sebenarnya tidak dibungkus oleh

citra]#dat#" sebuah paket, sehingga data yang dikirimkan

merupakan pure data packet.


52

4 "#dat#next#dat#" Merupakan acknowledgment bahwa data

telah diterima dengan baik dan

diperbolehkan untuk mengirimkan paket data

berikutnya.

Tabel 3.2. Tabel format komunikasi WebCamLAN

Melalui control object winsock, paket-paket data autentifikasi, data

perintah dan data citra akan dikirimkan dan diterima oleh server. Untuk

dapat menerima paket data, maka winsock harus berada pada kondisi

listening state. Selama state listening, server akan menerima data yang

dikirimkan kepadanya dan akan diterjemahkan sesuai dengan tabel

komunikasi. Server hanya akan menanggapi hasil terjemahan yang berupa

perintah dan autentifikasi saja, selain dari itu hanya akan diacuhkan dan

tidak diambil tindakan apa-apa. Hasil terjemahan authentifikasi akan

didekripsi untuk mendapatkan authentifikasi yang sebenarnya. Saat

mengirimkan data, server hanya akan mengirimkan paket-paket data yang

berupa paket data citra dan akan mengirimkan data tersebut kepada client

yang memiliki autentifikasi valid.

Citra yang telah disimpan menjadi file buffer oleh proses

pengambilan citra akan dibaca dan diubah menjadi bit-bit data lalu dipecah-

pecah berdasarkan ukuran MTU (Maximum Transfer Unit). Hasil dari

pemecahan file buffer kemudian dibungkus menjadi paket data berdasarkan

protokol komunikasi yang telah dijelaskan di atas. Setelah proses

pembungkusan ini selesai, maka server akan mengirimkannya kepada client

yang sedang terhubung oleh winsock.


53

Proses pengambilan tindakan atas terjemahan data yang dikirim dari

client dan proses pengiriman citra ini akan dilakukan secara periodik dengan

menggunakan control object timer.

3.3.4. Aplikasi Client

Secara keseluruhan aplikasi pada sisi client tidak jauh berbeda

dengan aplikasi pada sisi server, yang membedakan hanyalah proses yang

dilakukan. Adapun proses yang akan dilakukan pada sisi client adalah sebagai

berikut :

• Proses pengolahan citra yang meliputi menampilan citra.

• Proses komunikasi dengan server yang meliputi autentifikasi,

enkripsi-dekripsi data dan penerimaan citra sebagai data.

3.3.4.1. Proses pengolahan citra.

Antara aplikasi server dan aplikasi client tidak terdapat perbedaan

yang mencolok. Perbedaan yang ada hanyalah pada bagian proses, dimana

pada sisi client tidak membutuhkan proses pengambilan citra, namun tetap

ada proses pengolahan citra dikarenakan data citra yang telah dikirim oleh

aplikasi server perlu diolah kembali agar dapat ditampilkan menjadi citra

yang dapat dilihat secara visual. Hasil terjemahan proses komunikasi yang

berupa bit-bit data citra yang terpecah-pecah akan digabungkan lalu diolah

agar kembali membentuk citra kemudian disimpan menjadi sebuah file

buffer. Melalui control object picture, file buffer tersebut akan diload dan

ditampilkan sehingga didapatkan jendela preview yang dapat dilihat secara


54

visual. Proses ini merupakan kebalikan dari proses yang dilakukan pada

aplikasi server.

3.3.4.2. Proses komunikasi dengan server.

Seperti pada aplikasi server, proses ini juga memanfaatkan control

object winsock untuk dapat berkomunikasi dengan server melalui IP

(Internet Protokol). Untuk dapat menerima paket data citra dari server, client

harus berada pada kondisi listening state. Selama state listening, client akan

menerima data yang dikirimkan kepadanya dan akan diterjemahkan sesuai

dengan tabel komunikasi. Client hanya akan menanggapi hasil terjemahan

yang berupa data citra saja, selain dari itu hanya akan diacuhkan dan tidak

diambil tindakan apa-apa. Begitu juga saat mengirimkan data, client hanya

akan mengirimkan paket-paket data yang berupa paket perintah dan

authentifikasi. Saat melakukan pengiriman data, paket-paket data yang akan

dikirimkan diproses terlebih dahulu, sesuai dengan tabel komunikasi yang

telah dijelaskan pada proses komunikasi aplikasi server.

3.3.5. Perancangan GUI (Graphical User Interface)

Sebelum merancang sebuah aplikasi yang nantinya akan digunakan

oleh pengguna, maka perlu dibuatlah sebuah rancangan antarmuka atau GUI

sehingga pengguna dapat berinteraksi dengan aplikasi yang akan dibuat oleh

penyusun. Rancangan tersebut dapat didefinisikan sebagai berikut :


55

3.3.5.1. Sketch Graphical User Interface

Layaknya sebuah lukisan yang akan dilukiskan oleh seorang pelukis,

maka penyusun pun perlu untuk membuat sketch atau sketsa terlebih dahulu

terhadap antarmuka yang akan dirancang.

Berikut ini adalah sketch dari antarmuka tersebut :

a) Sketch Aplikasi Server

Gambar 3.11. Sketch form main aplikasi server

Gambar 3.12. Sketch form password aplikasi server


56

Gambar 3.13. Sketch form options aplikasi server

Gambar 3.14. Sketch form speed setting aplikasi server


57

Gambar 3.15. Sketch form source aplikasi server

Gambar 3.16. Sketch form about aplikasi server


58

b) Sketch Aplikasi Client

Gambar 3.17. Sketch form main aplikasi client

Gambar 3.18. Sketch form password aplikasi client


59

Gambar 3.19. Sketch form setting aplikasi client

Gambar 3.20. Sketch form about aplikasi client


60

3.3.5.2. Mock-up Graphical User Interface

Dari keseluruhan sketch yang telah dibuat sebelumnya, dapat

diambil mock-up atau screen capture aplikasi server dan client ini. Mock-

up dapat diibaratkan sebagai prototype dari antarmuka.

a) Mock-up Aplikasi Server

Gambar 3.21. Mock-up form main aplikasi server

Gambar 3.22. Mock-up form password aplikasi server


61

Gambar 3.23. Mock-up form setting aplikasi server

Gambar 3.24. Mock-up form speed setting aplikasi server


62

Gambar 3.25. Mock-up form driver aplikasi server

Gambar 3.26. Mock-up form about aplikasi server


63

b) Mock-up Aplikasi Client

Gambar 3.27. Mock-up form main aplikasi client

Gambar 3.28. Mock-up form password Aplikasi Client


64

Gambar 3.29. Mock-up form setting aplikasi client

Gambar 3.30. Mock-up form about aplikasi client


65

3.4. Perancangan perangkat keras

Perangkat keras yang dibutuhkan oleh masing-masing aplikasi ini adalah

Personal Computer (PC) yang difungsikan sebagai komputer workstation dan

komputer monitoring. PC yang difungsikan sebagai komputer workstation adalah PC

dengan kecepatan proses yang cukup tinggi, memiliki webcam yang telah terinstall

dengan baik pada sistem operasi dan terkoneksi melalui kabel USB (Universal Serial

Bus), memiliki satu buah kartu jaringan dan telah terinstall aplikasi server pada sistem

operasinya. PC yang difungsikan sebagai komputer monitoring juga memiliki

kecepatan proses yang cukup tinggi, memiliki 1 buah kartu jaringan dan telah

terinstall aplikasi client pada sistem operasinya. Masing-masing kartu jaringan pada

setiap PC dihubungkan ke switch/hub.

PC yang difungsikan sebagai workstation dan monitoring diharapkan

memiliki spesifikasi minimal sebagai berikut :

1. Prosessor : Intel Pentium ® 3 700 hz atau lebih tinggi

2. Hard Disk : 5 GB atau lebih tinggi

3. RAM : 128 (non shared), 256 (32 MB shared) atau lebih tinggi

4. VGA : 32 MB

5. NIC : Realtek RTL8139 Family PCI Fast Ethernet NIC Compatible

Jika fitur auto capture pada aplikasi client digunakan, maka harus

memiliki kapasitas hard disk sebesar 20GB dengan maintenance secara manual setiap

hari, untuk mencegah kehabisan ruang kosong di hard disk.

Switch atau hub yang akan digunakan sebagai konsentrator pada jaringan

diharapkan memiliki kecepatan minimal 10 Mbps.


BAB IV

IMPLEMENTASI SISTEM DAN HASIL

Pada bab ini penyusun akan menjelaskan mengenai implementasi remote

webcam pada LAN. Karena aplikasi ini berbasiskan jaringan, maka tidak menutup

kemungkinan aplikasi ini dapat dipergunakan pada internetwork atau internet, namun

di sini penyusun hanya akan membahas mengenai implementasi pada LAN saja.

4.1. Lingkungan Implementasi

4.1.1. Spesifikasi perangkat lunak

Perangkat lunak yang penyusun gunakan saat implementasi adalah

sebagai berikut :

Sistem Operasi Microsoft® Windows® XP Professional Edition

SP2

Bahasa Pemrograman Visual Basic 6.0

4.1.2. Spesifikasi perangkat keras

Perangkat keras yang penyusun gunakan saat implementasi adalah

sebagai berikut :

Komputer Server 1 Intel® Pentium® 4 Dual Core 3.0Ghz

1024Mb RAM

66
67

128Mb NVDIA Graphic Card

10/100 Mbps 3Com Ethernet Card

Compex USB Wifi Card

Lexcron Gennie WebCamera

Komputer Server 2 Laptop Axio Intel® Centrino Duo 2.4Ghz

1024Mb RAM

32Mb Onboard Intel® Graphic Card

100/1000 Mbps Intel® Network Card

Intel® Wifi Card

Lexcron Alladin WebCamera

Komputer Client Compaq NC600 Intel® Pentium® 4 1.7 Ghz

1024Mb RAM

32Mb ATI Mobility Graphic Card

100/1000 Mbps Broadcom NetExtreem Ethernet

Card

Atheros Wifi Card

Media penunjang 10/100 Mbps D-Link Switch-hub

Wireless D-Link AirStream

UTP Cable Belden


68

4.2. Implementasi API dalam aplikasi.

Dalam proyek ini, penyusun hanya menitikberatkan pembahasan pada data

transfer yang akan ditangani oleh socket atau lebih dikenal dengan nama winsock.

Pembahasan mengenai fungsi-fungsi API yang akan menangani pengambilan citra

dan konversi citra tidak akan dibahas secara mendetail, mengingat ruang lingkup

yang akan meluas pada API dan juga waktu yang dibutuhkan tidak mencukupi.

Fungsi-fungsi API yang penulis gunakan, telah dideskripsikan oleh E. J. Bantz Jr.

yang menggabungkan semua fungsi pengolahan citra menjadi sebuah modul pada

Visual Basic.

Seperti telah dijelaskan pada sub bahasan di atas, proses pengambilan citra

melalui API akan memanfaatkan DLL windows, yaitu avicap32.dll , kernel32.dll dan

user32.dll. Penggunaan API ini lebih banyak digunakan pada aplikasi server, karena

aplikasi server yang langsung berhubungan dengan webcam dan akan mengakses

resource webcam untuk mengambil gambar dan mentransfernya ke client.

Pada kernel32.dll (library kernel32), fungsi yang akan digunakan adalah

sebagai berikut ini

Declare Function lStrCpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Long, ByVal
lpString2 As Long) As Long
Declare Function lStrCpyn Lib "kernel32" Alias "lstrcpynA" (ByVal lpString1 As Any,
ByVal lpString2 As Long, ByVal iMaxLength As Long) As Long
Declare Sub RtlMoveMemory Lib "kernel32" (ByVal hpvDest As Long, ByVal hpvSource
As Long, ByVal cbCopy As Long)
Declare Sub hmemcpy Lib "kernel32" (hpvDest As Any, hpvSource As Any, ByVal
cbCopy As Long)
69

Penjelasan dari masing-masing fungsi API tersebut adalah sebagai berikut :

• lStrCpy pada library kernel32 berfungsi untuk mengkopi sebuah string

ke dalam buffer.

• lStrCpyn pada library kernel32 memiliki fungsi yang hampir sama

seperti lStrCpy, hanya saja fungsi ini lebih mengarah pada pengkopian

sejumlah karakter dari sebuah string saja.

• RtlMoveMemory pada library kernel32 berfungsi untuk memindahkan

memory dalam blok 4-bytes yang akan diikuti oleh byte-byte sisanya.

• hmemcpy pada library kernel32 berfungsi untuk mengkonversi user-

defined variable menjadi sebuah string.

Pada user32.dll (library user32), fungsi yang akan digunakan adalah sebagai

berikut ini:

Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal


hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long,
ByVal wFlags As Long) As Long
Declare Function DestroyWindow Lib "user32" (ByVal hndw As Long) As Boolean
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd
As Long, ByVal lpString As String) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd
As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As
Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As Long

Penjelasan dari masing-masing fungsi API tersebut adalah sebagai berikut :

• SetWindowPos pada library user32 berfungsi untuk mengubah ukuran,

posisi dan Z order dari sebuah child, pop-up atau top-level window.
70

Window-window tersebut akan diurutkan berdasarkan penampakan

atau tampilnya di layar.

• DestroyWindow pada library user32 berfungsi untuk menutup sebuah

window. Fungsi ini akan mengirimkan pesan WM_DESTROY dan

WM_NCDESTROY kepada window untuk menonaktifkan window

dan melepaskan fokus keyboard dari window tersebut.

• GetSystemMetrics pada library user32 berfungsi untuk mengambil system

metric atau seting konfigurasi sistem.

• SetWindowText pada library user32 berfungsi mengubah teks pada

sebuah window yang telah ditentukan.

• SetWindowLong pada library user32 berfungsi mengubah atribut dari

window yang telah ditentukan. Fungsi ini juga mengeset nilai 32-bit

pada offset yang telah ditentukan ke dalam extra window memory.

• SendMessage pada library user32 berfungsi memanggil prosedur

window pada window yang telah ditentukan dan tidak akan

mengembalikan nilai hingga prosedur window selesai memproses

pesan tersebut.

Pada avicap32.dll (library avicap32), fungsi-fungsi yang digunakan adalah

sebagai berikut:

Declare Function capCreateCaptureWindowA Lib "avicap32.dll" ( _


ByVal lpszWindowName As String, _
ByVal dwStyle As Long, _
ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Integer, _
ByVal hWndParent As Long, ByVal nid As Long) As Long
71

Declare Function capGetDriverDescriptionA Lib "avicap32.dll" ( _


ByVal wDriver As Integer, _
ByVal lpszName As String, _
ByVal cbName As Long, _
ByVal lpszVer As String, _
ByVal cbVer As Long) As Boolean

Penjelasan dari masing-masing fungsi API tersebut adalah sebagai berikut :

• capCreateCaptureWindowA pada library avicap32 berfungsi untuk

membuat atau membentuk window capture frame yang akan

digunakan untuk menampilkan hasil capture dari imaging device.

Window capture frame ini nanti akan penyusun letakkan di dalam

sebuah picture box.

• capGetDriverDescriptionA pada library avicap32 berfungsi untuk melihat

satu-persatu driver imaging device yang telah terinstall pada sistem.

Proses pengambilan citra dilakukan dengan memanggil fungsi berikut ini

pada rutin event timer:

Private Sub tmrCam_Timer()


On Error GoTo hell
Dim i As Integer
If isCameraON <> True Then
GoTo hell
Else
'get preview window frame
Call capGrabFrame(lwndCap)

' Copy current frame to Clipboard


Call capEditCopy(lwndCap)

' Put Clipboard's data to picPreview, but verified it first (is it DIB?)
If Clipboard.GetFormat(8) Then
picPreview.Picture = Clipboard.getData
72

' clear clipboard


Clipboard.Clear
End If
End If
hell:
End Sub

Fungsi-fungsi API di atas lebih banyak dipergunakan oleh aplikasi server,

karena aplikasi serverlah yang langsung menggunakan webcam.

4.3. Implementasi timer control dalam aplikasi

Dalam aplikasi penyusun menggunakan timer control untuk berbagai

macam keperluan handling atau penanganan, seperti penanganan terhadap koneksi,

penanganan terhadap file buffer, penanganan terhadap log citra dan penanganan

terhadap penjadualan proses.

Penanganan terhadap koneksi merupakan hal yang cukup penting dalam

aplikasi ini untuk mencegah aplikasi crash, dikarenakan jika tidak ada kontrol

terhadap koneksi maka pengiriman data akan dilakukan asal-asalan tanpa peduli

apakah koneksi masih terjalin ataukah tidak. Dengan memanfaatkan timer control

maka proses pengecekan konektivitas dapat dilakukan secara berkala sehingga error

atau crash dapat sedikit ditekan. Selain itu proses di dalam timer control akan

menutup koneksi yang menganggur terlalu lama untuk mencegah aplikasi membanjiri

sistem oleh koneksi yang terlalu banyak dibuka.


73

Berikut ini merupakan proses yang dilakukan pada timer control client dan

server, event pada timer control inilah yang melakukan pengecekan terhadap

komunikasi antar client dan server.

Private Sub tmrSocketState_Timer()


Dim inState As String
On Error GoTo hell

Select Case inSock.State


Case sckClosed
inState = "Closed"
inSock.Listen
Case sckOpen
inState = "Open"
Case sckListening
inState = "Listening"
Case sckConnectionPending
inState = "Connection pending"
Case sckResolvingHost
inState = "Resolving host"
Case sckHostResolved
inState = "Host resolved"
Case sckConnecting
inState = "Connecting"
Case sckConnected
inState = "Connected"
Case sckClosing
inState = "Peer is closing the connection"
inSock.Close
Case sckError
inState = "Error"
inSock.Close
End Select

lblStatus.Caption = "Status : Port " & inSock.LocalPort & " " & inState

hell:
If Err.Number = 10048 Then
'err.number 10048 == address in use then exit program
MsgBox "Port " & FormMain.inSock.LocalPort & " already in use. Please specify other port at
Setting Window", vbExclamation, "Port in use"
tmrSocketState.Enabled = False
frmSetting.Show
74

End If
End Sub

Timer control juga digunakan untuk menangani file buffer dan log citra

karena saat aplikasi menggunakan sebuah file, file tersebut akan terkunci dan tidak

dapat digunakan oleh proses yang lain sampai file tersebut ditutup oleh proses yang

membukanya. Ketika sebuah proses lain akan membuka file yang sedang digunakan

oleh proses lain maka akan timbul konflik di dalam aplikasi yang akan menyebabkan

aplikasi crash. Sebuah proses di dalam timer control akan melakukan penjadualan

terhadap file-file yang akan dipergunakan oleh aplikasi, sehingga memperkecil

kemungkinan untuk terjadinya tabrakan saat membuka file.

Penjadualan pada proses juga perlu dilakukan dan ditangani oleh timer

control. Masing-masing proses dalam aplikasi akan diurutkan sesuai urutan yang

seharusnya dan dipanggil oleh timer control. Proses yang berada di dalam timer

control diantaranya adalah proses pengambilan citra, pengkopian citra ke dalam

clipboard, peletakan citra ke dalam picture box, pengeksportan citra menjadi buffer

dan dikonversi menjadi JPEG lalu mengirimkannya kepada client. Jika runtutan

proses tersebut tidak berjalan secara urut, maka akan timbul konflik di dalam aplikasi,

karena itu di sini timer control dipergunakan.

Berikut ini adalah proses yang dilakukan pada sisi server.

Private Sub tmrSender_Timer(Index As Integer)


On Error GoTo hell
tmrSender(Index).Interval = SPEEDCAPTURE
lbltimer.Caption = "Timer : " & Index & " [activated] PORT : " & outSock(Index).Index
If isCameraON <> True Then
75

MsgBox "Camera is Off"


GoTo hell
Else
FileName = App.Path & "\stream" & Index & ".buff"

'writeImage
'SavePicture picPreview.Picture, FileName
Call SAVEJPEG(getWidth(lwndCap), getHeight(lwndCap), FileName, JPEGQUALITY, picPreview)
'send file buffer to remote host and then load file buffer to _
preview window after all buffer has been send
If ISAUTHENTICATED(Index) Then
If sendFile(FileName, Index) Then
'imgView.Picture = LoadPicture(FileName)
End If
Else
lblpackage.Caption = "Session Not Authenticated"
closeSession (Index)
End If
'checking for connection. if not connected then stop camera routine
If Not isReadyToCommunicate(outSock(Index)) Or Not NextPart(Index) Then
tmrSender(Index).Enabled = False
closeSession (Index)
End If
'delete file buffer
'If Dir(FileName) <> "" Then Kill FileName

End If
hell:
End Sub

Untuk melakukan logging terhadap gambar webcam yang telah diterima dari

server, pada aplikasi client juga menggunakan timer control. Proses logging akan

dilakukan berdasarkan interval pada timer control yang mengatur proses logging

tersebut. Berikut adalah source dari timer control tersebut.

Private Sub tmrCapture_Timer()


If isReadyToCommunicate(outSock) And Not IsFileOpen And Dir$(bufferName) <> "" Then
newPathFile = IMAGEPATH & "\" & Me.Caption & "\" & Day(Date) & _
"-" & Format(Time, "hh-nn-ss-") & GetTickCount & ".jpg"
MoveFile Me.Caption, bufferName
Else: Exit Sub
76

End If
End Sub

Penyusun lebih banyak menggunakan timer control untuk mengurangi

timbulnya konflik di dalam aplikasi dengan menjalankan beberapa rutin-rutin

pengecekan yang harus dilakukan.

4.4. Implementasi socket pada aplikasi.

Secara umum socket pada masing-masing aplikasi memiliki fungsionalitas

yang sama, akan tetapi secara proses masing-masing aplikasi memiliki alur yang

berbeda. Pada sisi server, socket akan bersifat multiple sehingga sisi server mampu

untuk menerima multiple connection dari beberapa host. Fungsi seperti ini dilakukan

dengan cara menyiapkan satu socket untuk selalu listening pada port yang sudah

didefinisikan sebelumnya, lalu disediakan juga socket lain yang akan berkomunikasi

secara langsung dengan client yang melakukan request connect ke server. Sedang

pada sisi client, masing-masing socket akan dialokasikan hanya untuk satu connection

ke server, meskipun secara tampilan sisi client memiliki banyak target host, namun

untuk setiap host tersebut hanya terdapat satu socket.

Berikut ini merupakan proses pada sisi server untuk menangani event

request connect.

Private Sub inSock_ConnectionRequest(ByVal requestID As Long)


' have a free sock connect to the request
Dim i As Integer
If INIGet("integration", "ipfilter", FilePathINI) Then
If doFiltering(Me.ListAllowIP, inSock.RemoteHostIP) = False Then
77

GoTo hell
End If
End If

For i = 0 To 10
If FreeConn(i) Then
FreeConn(i) = False
outSock(i).Close
outSock(i).Accept requestID
'MsgBox "Porting Connection to index " & i
Exit For
End If
Next
hell:
inSock.Close
End Sub

Pada proses ini, socket sisi server akan melemparkan requestID dari connection

request sisi client kepada socket lain pada sisi server yang sedang menganggur atau

free lalu membuat socket tersebut yang akan berkomunikasi dengan sisi client. Proses

penerimaan requestID tersebutlah yang akan dilakukan secara terus menerus selama

terjadi request connect dari sisi client.

Ketika konektivitas sudah terjalin maka antara client dengan server dapat

memulai untuk mengirimkan data. Untuk dapat saling berkomunikasi dengan baik,

dibuatlah sebuah protokol lain selain TCP/IP yang akan berfungsi untuk

membahasakan isi dari paket data yang dikirimkan. Seperti halnya protokol YM

(Yahoo! Messenger), protokol ini penyusun beri nama protokol ITP (invisible_theater

protokol) Berikut ini merupakan protokol ITP yang dirangkum dalam satu module

Visual Basic:
78

Option Explicit
'******************************************************************************
' Author: invisible_theater (invisible_theater@yahoo.com) '
' (invisible.theater@gmail.com) '
' '
' Date: 07/02/2007. '
' Copyright: Copyright© 2007, invisible_theater. '
' Purpose: webcamera syncronization and comunication as '
' internet protocol. '
' '
' Details: '
' ITP module (invisible_theater Protocol) '
' '
' NOTE: '
' '
' '
'******************************************************************************

' =================== CONSTANT PACKET PROTOCOL ======================== '


'Private Const START_WEBCAM = "#i_t#start#i_t#"
'Private Const STOP_WEBCAM = "#i_t#stop#i_t#"
'Private Const OPEN_CONN = "#i_t#open#i_t#"
'Private Const CLOSE_CONN = "#i_t#close#i_t#"
'Private Const REJECT_CONN = "#i_t#reject#i_t#"
'Private Const ACCEPT_CONN = "#i_t#accept#i_t#"
'Private Const KEEP_ALIVE = "#i_t#pingpong#i_t#"
Private Const PACKET_COMMAND = "#i_t#"
Private Const PACKET_AUTH = "#invisible#"
Private Const PACKET_DATA = "#dat#"
' ===================================================================== '
Dim Crypto As New clsCryptoRC4

Public Function getFrame(ByVal Frame As String) As String


If Left(Frame, 5) = PACKET_COMMAND And Right(Frame, 5) = PACKET_COMMAND Then
getFrame = getCommand(Frame)
ElseIf Left(Frame, 11) = PACKET_AUTH And Right(Frame, 11) = PACKET_AUTH Then
getFrame = "auth" 'getAuth(frame)
ElseIf Left(Frame, 5) = PACKET_DATA Then
getFrame = "data" 'getData(frame)
Else: getFrame = "NOT DEFINED COMMAND"
End If

End Function

Private Function getCommand(ByVal data As String) As String


'getCommand = StrReverse(Mid$(StrReverse(Mid(data, 6)), 6))
Dim arrDATA As Variant
arrDATA = Split(data, PACKET_COMMAND) '
79

getCommand = arrDATA(1)
Debug.Print "getCommand :: " & arrDATA(1)
End Function

Public Function getAuth(ByVal data As String) As String


Dim RAW_CRYPTED As String, CRYPTED As String
'RAW_CRYPTED = StrReverse(Mid(StrReverse(Mid(data, 12)), 12))
Dim arrDATA As Variant
arrDATA = Split(data, PACKET_AUTH) '
RAW_CRYPTED = arrDATA(1)
Debug.Print "raw crypted :: " & arrDATA(1)
CRYPTED = Crypto.ACSDecrypt(RAW_CRYPTED, FormMain.PASS_CODE, True)
Debug.Print CRYPTED
CRYPTED = Mid$(CRYPTED, 6, Len(CRYPTED) - 10)
Debug.Print "AUTH :: " & CRYPTED
getAuth = CRYPTED
End Function

Public Function getData(ByVal data As String) As String


Dim i As Long
Dim arrDATA As Variant
arrDATA = Split(data, PACKET_DATA, -1, vbTextCompare) '
'getData = arrDATA(0)
For i = 0 To UBound(arrDATA)
getData = getData & arrDATA(i)
Next
Debug.Print "DATA : " & data
End Function

Public Function setFrame(ByVal Command As String, Optional password As String, Optional data As
String) As String
'Dim dataPacket As String

Select Case LCase(Command)


Case "auth"
setFrame = PACKET_AUTH & Crypto.ACSEncrypt("auth!" & password & "!auth", password, True)
& PACKET_AUTH
Case "data"
setFrame = data & PACKET_DATA
Case "start"
setFrame = PACKET_COMMAND & LCase(Command) & PACKET_COMMAND
Case "stop"
setFrame = PACKET_COMMAND & LCase(Command) & PACKET_COMMAND
Case "open"
setFrame = PACKET_COMMAND & LCase(Command) & PACKET_COMMAND
Case "close"
setFrame = PACKET_COMMAND & LCase(Command) & PACKET_COMMAND
Case "getauth"
80

setFrame = PACKET_COMMAND & LCase(Command) & PACKET_COMMAND


Case "okauth"
setFrame = PACKET_COMMAND & LCase(Command) & PACKET_COMMAND
Case "errauth"
setFrame = PACKET_COMMAND & LCase(Command) & PACKET_COMMAND
Case "errstart"
setFrame = PACKET_COMMAND & LCase(Command) & PACKET_COMMAND
Case "next"
setFrame = PACKET_COMMAND & LCase(Command) & PACKET_COMMAND
Case ""
setFrame = PACKET_COMMAND & "" & PACKET_COMMAND
End Select

End Function

Protokol tersebut akan membungkus paket-paket data komunikasi yang kritikal

menjadi paket data yang terenkripsi, seperti paket data autentifikasi password. Selain

itu, modul tersebut memiliki fungsi-fungsi yang berguna untuk menterjemahkan dari

paket data mentah menjadi paket data yang siap dikirimkan melalui jaringan dan

sebaliknya.

Dalam mengirimkan stream paket-paket datanya baik aplikasi server

maupun aplikasi client harus selalu melakukan sinkronisasi mengenai paket data yang

telah diterima dan yang akan dikirimkan. Sinkronisasi tersebut berguna untuk

memastikan apakah paket data tersebut rusak atau tidak, selain itu berguna untuk

memastikan akhir dari sebuah stream paket data. Sinkronisasi tersebut berupa

acknowledgment yang telah disepakati antar client dan server.

Proses yang akan terjadi pada sisi server ketika menerima data dari client :

Private Sub outSock_DataArrival(Index As Integer, ByVal bytesTotal As Long)


If isReadyToCommunicate(outSock(Index)) Then
Dim data As String
outSock(Index).getData data
81

' // add packet received to listbox


'listPacketData.AddItem data
'If listPacketData.ListCount > 0 Then listPacketData.Selected(listPacketData.ListCount - 1) = True
'MsgBox data
Select Case getFrame(data)

Case "auth" ' server received


'writeLogDataIn ("REQUEST LOGIN ATTEMPT FROM [ " & inSock.RemoteHostIP & ":" &
inSock.RemotePort & " ]")
'MsgBox "REQUEST LOGIN ATTEMPT FROM [ " & inSock.RemoteHostIP & ":" &
inSock.RemotePort & " ]"
If getAuth(data) = PASS_CODE Then
ISAUTHENTICATED(Index) = True
'writeLogDataIn ("ACCESS CODE ACCEPTED. [authentification valid. waiting for next
command.]")
outSock(Index).SendData (setFrame("okauth"))
Else
ISAUTHENTICATED(Index) = False
'writeLogDataIn ("WRONG ACCESS CODE. [authentification failure, closing connection to
remote host.]")
outSock(Index).SendData (setFrame("errauth"))
DoEvents
'reset socket to control
outSock(Index).Close
closeSession (Index)
'
End If

Case "start" ' server received


'lblStatus.Caption = "attempted to start camera"
'writeLogDataIn ("REQUEST START CAMERA ATTEMPT FROM [ " & inSock.RemoteHostIP & ":"
& inSock.RemotePort & " ]")
'startCapture
'MsgBox "REQUEST START CAMERA ATTEMPT FROM [ " & inSock.RemoteHostIP & ":" &
inSock.RemotePort & " ]"
If ISAUTHENTICATED(Index) Then
lblpackage.Caption = "START BROADCASTING ..."
'Call startCam(framePreview.hwnd)
'ISCAMHASSTART = True
tmrSender(Index).Interval = SPEEDCAPTURE
tmrSender(Index).Enabled = True
Else
outSock(Index).SendData (setFrame("getauth"))
'writeLogDataIn ("REQUEST NOT AUTHORIZED. [request cam not authorized, requesting
authorization code from remote host.]")
End If

Case "stop" 'server received


82

'lblStatus.Caption = "attempted to stop camera"


'writeLogDataIn ("REQUEST STOP CAMERA FROM [ " & inSock.RemoteHostIP & ":" &
inSock.RemotePort & " ]")
'ISCAMHASSTART = False
'MsgBox "REQUEST STOP CAMERA FROM [ " & inSock.RemoteHostIP & ":" &
inSock.RemotePort & " ]"
If ISAUTHENTICATED(Index) Then
'Call stopCam
tmrSender(Index).Enabled = False
closeSession (Index)
'ISCAMHASSTART = False
'writeLogDataIn ("BRODCAST AND CAMERA STOPPED ...")
Else: 'writeLogDataIn ("PROBABLY HIJACKING PROCEDURAL DETECTED")
End If

Case "open" ' server received


'lblStatus.Caption = "attempted to handshake"
'writeLogDataIn ("REQUEST HANDSHAKE FROM [ " & inSock.RemoteHostIP & ":" &
inSock.RemotePort & " ]")
'MsgBox "REQUEST HANDSHAKE FROM [ " & inSock.RemoteHostIP & ":" & inSock.RemotePort
& " ]"
If ISAUTHENTICATED(Index) Then
'writeLogDataIn ("HOST ALREADY AUTHORIZED. [waiting for next command.]")
Else
outSock(Index).SendData (setFrame("getauth"))
'writeLogDataIn ("HOST NOT AUTHORIZED. [ requesting authorization code from remote
host.]")
End If

Case "close" 'server received


'lblStatus.Caption = "attempted to close connection"
'writeLogDataIn ("CONNECTION CLOSING ATTEMPT FROM [ " & inSock.RemoteHostIP & ":" &
inSock.RemotePort & " ]")
'MsgBox "CONNECTION CLOSING ATTEMPT FROM [ " & inSock.RemoteHostIP & ":" &
inSock.RemotePort & " ]"
If ISAUTHENTICATED(Index) Then
'writeLogDataIn ("CLOSE CONNECTION TO REMOTE HOST")
'ISCAMHASSTART = False
tmrSender(Index).Enabled = False
closeSession (Index)
'Call stopCam
'stopConnect
Else: 'writeLogDataIn ("PROBABLY HIJACKING PROCEDURAL DETECTED")
End If
Case "next"
NextPart(Index) = True

Case "NOT DEFINED COMMAND"


83

'lblStatus.Caption = "[WARNING !!!] hijacking attempt."


'writeLogDataIn ("MALICIOUS CODE RECEIVED FROM[ " & inSock.RemoteHostIP & ":" &
inSock.RemotePort & " ]")
'writeLogDataIn ("PROBABLY HIJACKING PROCEDURAL DETECTED")
'MsgBox "MALICIOUS CODE RECEIVED FROM[ " & inSock.RemoteHostIP & ":" &
inSock.RemotePort & " ]"
End Select

Else
End If
End Sub

Sebelum mengirimkan paket stream, aplikasi server melakukan validasi terlebih

dahulu, apakah koneksi dengan client sudah terjalin atau belum. Ketika koneksi telah

terjalin maka setiap paket data yang diterima oleh server akan diterjemahkan

berdasarkan protokol yang telah didefinisikan.

Ketika hasil terjemahan tersebut berupa permintaan untuk mengirimkan paket stream

ke client, maka aplikasi server akan melakukan proses sebagai berikut:

Private Sub tmrSender_Timer(Index As Integer)


'On Error GoTo hell
tmrSender(Index).Interval = SPEEDCAPTURE
lbltimer.Caption = "Timer : " & Index & " [activated] PORT : " & outSock(Index).Index
If isCameraON <> True Then
MsgBox "Camera is Off"
GoTo hell
Else
FileName = App.Path & "\stream" & Index & ".buff"

'writeImage
'SavePicture picPreview.Picture, FileName
Call SAVEJPEG(getWidth(lwndCap), getHeight(lwndCap), FileName, JPEGQUALITY, picPreview)
'send file buffer to remote host and then load file buffer to _
preview window after all buffer has been send
If ISAUTHENTICATED(Index) Then
If sendFile(FileName, Index) Then
'imgView.Picture = LoadPicture(FileName)
End If
Else
lblpackage.Caption = "Session Not Authenticated"
84

closeSession (Index)
End If
'checking for connection. if not connected then stop camera routine
If Not isReadyToCommunicate(outSock(Index)) Or Not NextPart(Index) Then
tmrSender(Index).Enabled = False
closeSession (Index)
End If
'delete file buffer
'If Dir(FileName) <> "" Then Kill FileName

End If
hell:
End Sub

Di mana server akan melakukan validasi mengenai konektivitas dan authentifikasi

terlebih dahulu, setelah melewati kedua validasi tersebut maka aplikasi server akan

mengirimkan paket data kepada aplikasi client pada socket yang bersangkutan.

Proses pada aplikasi client ketika menerima paket data dari server :

Private Sub outSock_DataArrival(ByVal bytesTotal As Long)


If isReadyToCommunicate(outSock) Then
Dim packetData As String ', filename As String
'packetData = ""
outSock.getData packetData

'lblStatus.Caption = "received data : " & getFrame(packetData)


'MsgBox packetData
Debug.Print "RECEIVED PACKET :: " & packetData

Select Case getFrame(packetData)


Case "data" ' client received

bufferName = App.Path & "\stream" & Me.Caption & ".buff"


If (saveFile(bufferName, getData(packetData), Me)) Then
On Error Resume Next
With imgView
.Picture = LoadPicture(bufferName)
.ScaleMode = 3
.AutoRedraw = True
.PaintPicture .Picture, _
0, 0, .ScaleWidth, .ScaleHeight, _
0, 0, _
85

.Picture.Width / 26.46, _
.Picture.Height / 26.46
End With
Else

End If

Case "getauth" ' client received


lblStatus.Caption = "attempted to get authentification"
Dim Pass As New FormPassBox
Pass.Show vbModal, MDImain
PASS_CODE = Pass.pswd
If isReadyToCommunicate(outSock) Then
outSock.SendData (setFrame("auth", PASS_CODE))
End If

Case "okauth" ' client received


lblStatus.Caption = "password is OK"
outSock.SendData (setFrame("start"))
cmdConnect.Caption = "Stop Viewing"

Case "errauth" ' client received


lblStatus.Caption = "password is incorrect"
cmdConnect.Caption = "Connect"
stopConnect

Case "errstart" ' client received


lblStatus.Caption = "cam in use"
stopConnect

Case ""
lblStatus.Caption = "NOT DEFINED COMMAND"
'writeLogDataIn (PartFile & " BLANK : " & packetData)

Case "NOT DEFINED COMMAND"


lblStatus.Caption = "[WARNING !!!] hijacking attempt."
'writeLogDataIn (PartFile & " NOT DEFINED: " & packetData)
End Select

Else:
End If
hell:
End Sub
86

Seperti halnya pada sisi server, proses ini juga akan menerjemahkan paket data yang

diterima menjadi perintah yang akan dilakukan oleh client. Setelah paket data

diterjemahkan, maka client juga akan mengirimkan paket data kepada server

berdasarkan perintah terjemahan tersebut, seperti meminta authentifikasi, meminta

data stream, atau pemberitahuan bahwa authentifikasi gagal.

4.5. GUI (Graphical User Interface)

Ketika aplikasi server dijalankan, aplikasi akan memulai untuk meng-

capture citra dari webcam dan akan listening pada socket yang telah didefinisikan

pada konfigurasi.

Gambar 4.1 Aplikasi server ketika dijalankan


87

Untuk melakukan konfigurasi terhadap aplikasi server, pengguna dapat memilih

menu “Options” yang akan meminta authentifikasi berupa password sebelum

pengguna diperbolehkan merubah konfigurasi aplikasi server.

Gambar 4.2 Input authentifikasi password

Ketika authentifikasi tersebut valid maka pengguna akan disuguhkan konfigurasi

yang dapat diterapkan pada aplikasi server, seperti ubah password, filter IP,

kecepatan transfer, port yang akan digunakan dan lain-lain.


88

Gambar 4.3 Window konfigurasi server

Gambar 4.4 Window format video


89

Gambar 4.5 Window Video Source Setting

Gambar 4.6 Window konfigurasi kecepatan transfer


90

Untuk melihat mengenai informasi aplikasi server, pengguna dapat memilih menu

“About” yang akan menampilkan window seperti berikut ini:

Gambar 4.7 Window About

Pada aplikasi client, ketika aplikasi dijalankan pengguna akan diminta untuk

memasukkan hostname dan port yang digunakan oleh aplikasi server, setelah itu

pengguna dapat melakukan koneksi ke server dengan menekan tombol “Connect”


91

Gambar 4.8 Aplikasi client ketika dijalankan

Untuk menjalankan fitur auto capture pada aplikasi client, pengguna dapat memilih

menu “Options” sehingga akan memunculkan window konfigurasi auto capture.


92

Gambar 4.9 Window konfigurasi Auto Capture


BAB V

ANALISA HASIL

Pada bab ini penyusun akan memberikan analisa mengenai konfigurasi aplikasi,

kelebihan serta kekurangan menyangkut dengan aplikasi yang telah penyusun

buat.

5.1. Konfigurasi aplikasi

Lingkungan dan perangkat keras yang penyusun gunakan saat

melakukan analisa terhadap hasil serta kinerja aplikasi adalah sebagai berikut ini :

No Jenis Perangkat Keras Spesifikasi


1 Prosessor Intel® Celeron® 2.4 Ghz

2 RAM 512 Mb

3 VGA 64 Mb dedicated

4 Ethernet Card 100 mbps onboard (run on 100 base speed)

Tabel 5.1. Tabel Spesifikasi Aplikasi Server

No Jenis Perangkat Keras Spesifikasi


1 Prosessor Intel® Pentium® M 1.6 Ghz

2 RAM 1024 Mb

3 VGA 32 Mb dedicated

4 Ethernet Card 1024 mbps onboard (run on 100 base speed)

Tabel 5.2. Tabel Spesifikasi Aplikasi Client

93
94

No Jenis Perangkat Keras Spesifikasi


1 Switch hub Alliedtelesys 100 mbps

Tabel 5.3. Tabel Spesifikasi perangkat pendukung

Dari ujicoba yang telah penyusun lakukan pada dua warnet yang sama-sama

memiliki traffic local yang cukup tinggi, didapatkan hasil rerata sebagai berikut

ini :

No Cam. MTU Qua Speed Bandwidth Refresh Nois


Res. lity Client Server rate ed
1 640x320 3kb 50% 500ms 93kB/s 45kB/s 42/30s No

2 640x320 3kb 50% 200ms 130kB/s 70kB/s 44/30s No

3 640x320 10kb 20% 500ms 90kB/s 42kB/s 40/30s 10%

4 640x320 3kb 30% 200ms 120kB/s 45kB/s 49/30s No

5 640x320 5kb 30% 200ms 110kB/s 48kB/s 39/30s 30%

6 640x320 8kb 50% 500ms 55kB/s 20kB/s - -

Tabel 5.4. Tabel Hasil ujicoba

Dari tabel hasil di atas, refresh rate yang dihasilkan tidak selalu

berbanding lurus dengan peningkatan nilai speed dan MTU, dimana semakin

besar nilai MTU maka besar data yang akan dikirimkan per-transmit akan

semakin besar, dan semakin kecil nilai speed maka jumlah stream citra yang akan
95

dikirimkan semakin banyak. Namun jika nilai kualitas gambar diturunkan maka

akan memiliki pengaruh yang cukup signifikan terhadap nilai refresh rate.

Sebagai bukti atas ujicoba yang telah penyusun lakukan, berikut ini

penyusun akan memberikan hasil capture desktop pada masing-masing aplikasi

saat dilakukan ujicoba disalah satu warnet.

Gambar 5.1. Gambar desktop aplikasi Server.


96

Gambar 5.1. Gambar desktop aplikasi Client.

Dari hasil capture destop tersebut di atas, terlihat juga nilai penggunaan CPU

pada masing-masing aplikasi. Pada aplikasi server penggunaan CPU berkisar

antara 15-18%, dan pada aplikasi client penggunaan CPU berkisar antara 3-10%.

Hal ini membuktikan bahwa aplikasi yang telah penyusun buat, tidak

menggunakan resource CPU yang besar

5.2. Manfaat dan kemudahan

Aplikasi Remote Webcam telah berhasil penyusun diujicobakan pada

jaringan LAN dan jaringan internet. Aplikasi ini memiliki manfaat dan

kemudahan sebagai berikut :


97

1. Warnet dapat melakukan monitoring terhadap workstation-

workstation atau asset-aset penting dengan memanfaatkan webcam

yang telah terintegrasi, sehingga tidak perlu untuk mengeluarkan

biaya pembelian CCTV.

2. Pengawas dapat lebih mudah mengawasi beberapa workstation

secara bersamaan karena beberapa workstation dapat ditampilkan

dalam satu GUI.

5.3. Keunggulan dan kekurangan

Aplikasi Remote Webcam ini memiliki keunggulan sebagai berikut :

1. Server mampu menerima dan melayani banyak permintaan koneksi

dari client secara simultan.

2. Server mampu melakukan filtering terhadap setiap koneksi yang

masuk, sehingga hanya IP tertentu saja yang dapat terkoneksi ke

server.

3. Kualitas citra dan kecepatan transfer antara client dan server dapat

disesuaikan dengan kebutuhan, kemampuan perangkat dan

kemampuan jaringan.

4. Proteksi keamanan terhadap konfigurasi server dan konektivitas

menggunakan password.
98

5. Client mampu terkoneksi dan memonitor lebih dari satu server

pada waktu yang bersamaan.

6. Client mampu melakukan logging terhadap citra yang diterima dari

server.

Dari beberapa kelebihan-kelebihan yang telah disebutkan di atas,

terdapat juga kekurangan-kekurangan yang masih belum didukung. Kekurangan-

kekurangan tersebut antara lain :

1. Paket data stream yang ditransfer belum terenkripsi, sehingga

memungkinkan untuk terjadinya pencurian data melalui sniffing.

2. Reabilitas aplikasi server dalam mengirimkan data stream tidak

dapat terjaga dengan baik sehingga image stream yang tertampil

akan terhenti ditengah jalan.

3. Tidak adanya fungsi untuk melakukan pencarian hasil loging pada

kurun waktu tertentu.

4. Pengecekan terhadap validitas image stream hanya dilakukan

dengan cara yang sederhana, sehingga berimbas pada timbulnya

noise pada image stream.


BAB VI

KESIMPULAN DAN SARAN

Pada akhir penyusunan skripsi ini dicantumkan beberapa kesimpulan dan

saran mengenai hal-hal yang terkait dengan aplikasi remote webcam yang penyusun

buat.

6.1. Kesimpulan

Dari implementasi aplikasi remote webcam yang telah penyusun lakukan,

maka didapatkan kesimpulan bahwa :

1. Aplikasi remote webcam dapat diterapkan dengan baik pada jaringan

LAN warnet yang memiliki traffic lokal yang cukup tinggi.

2. CPU usage aplikasi remote webcam pada sisi server dan sisi client

relatif kecil, sehingga tidak berdampak buruk bagi responsibilitas dan

stabilitas sistem operasi secara keseluruhan.

3. Bandwidth usage aplikasi remote webcam relatif kecil sehingga tidak

menambahi beban jaringan lokal warnet.

4. Workstation yang telah ditanamkan aplikasi server tidak akan dapat

menggunakan webcam untuk aplikasi yang lain, selain itu clipboard pun

juga tidak dapat digunakan.

99
100

5. Konfigurasi MTU pada aplikasi server akan berdampak pada disfungsi

aplikasi jika pengguna menggunakan MTU yang melebihi rekomendasi

default.

6.2. Saran

Saran yang dapat penyusun berikan dalam mengembangkan aplikasi remote

webcam ini adalah :

1. Enkripsi semua paket data yang dilewatkan melalui jaringan, sehingga

bukan hanya saat authentifikasi saja, melainkan saat data stream

dilewatkan juga dienkripsi.

2. Penambahan fungsi searching untuk log-log file streamnya.


DAFTAR PUSTAKA

Francesco, Balena, Programming Visual Basic 6.0, Microsoft® Press, 1999

Mandelbrot Set, The, Advanced Microsoft Visual Basic 6.0 , Microsoft® Press,

1998

Dan, Pilone, Neil, Pitman, UML 2.0 in a Nutshell, O'Reilly, 2005

Press, Microsoft, Microsoft® Win32® Programmer's Reference, Microsoft®

Press, 1993

Win32 API Reference for HLA

http://webster.cs.ucr.edu/Page_win32/kernelref.pdf

JPEG

http://en.wikipedia.org/wiki/JPEG

Overview of Windows32 API

http://msdn.microsoft.com/en-us/library/aa383723(VS.85).aspx

Glossary of Windows Socket

http://tangentsoft.net/wskfaq/glossary.html

Winsock Example

http://www.phoenixbit.com/site/tutorials/Programming/Visual%20Basic/w

insock1/WinsockSource.zip

101

Anda mungkin juga menyukai