• Tidak ada hasil yang ditemukan

Socket Programming menggunakan WinSock

BAB I PENDAHULUAN

2.6. Pemrograman menggunakan Visual Basic 6.0

2.6.3. Socket Programming menggunakan WinSock

Langkah-langkah yang diperlukan untuk membuat aplikasi ini akan dijelaskan sebagai berikut.

Membuat aplikasi client.

1. Buat formclient dengan menggunakan Form Designer pada Visual Basic sehingga terlihat seperti gambar di bawah ini.

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

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

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.

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

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.

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

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

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.

Untuk menghasilkan file executable yang nantinya dapat dijalankan tanpa harus menggunakan compiler Visual Basic, dapat menggunakan “Make Project1” pada menu “File”.

37 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

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.

Dokumen terkait