Jumat, 19 September 2008

Membuat Program Chatiing Menggunakan Visual Basic

Ini adalah dasar dari pengembangan aplikasi chatting yang biasa digunakan untuk berkomunikasi antar komputer. Penerapan aplikasi ini yang sedang kita bahas disini menggunakan komponen WinSock pada Visual Basic 6.0 yang telah terintegrasi didalamnya. Tentunya pada implementasi aplikasi chatting disini harus memiliki lebih dari 1 socket yang mana socket yang 1 digunakan untuk listening dan yang lain untuk menghubungi program yang lain. Komunikasi socket ini membutuhkan sebuah port untuk berkomunikasi, layaknya sebuah gerbang untuk lalulintas agar si A dapat pergi ketempat si B. Port ditentukan dengan angka, tentunya port tersebut anda sendirilah yang menentukan untuk berkomunikasi. Namun ada baiknya ada mengenal terlebih dahulu beberapa port yang telah menjadi standarisasi penggunaannya, seperti port FTP pada port 20/21, port TCP/UPD pada port 19, POP3 port 110, HTTPS port 443 dan masih banyak lagi. Pertama-tama agar aplikasi chat ini dapat berkomunikasi tentunya socket harus membuka sebuah port, sebagai pintu gerbang bagi program lainnya dapat berkomunikasi dengan program ini. Baiklah tanpa perlu banyak berbasa-basi lagi, mulai saya sedikit beri contoh:
Option Explicit

Private Sub Form_Load()
'inisialisasi sock untuk membuka port,
'pertama cek apakah socket keadaan terbuka
'jika iya maka socket ditutup, kemudian
'buka port 1234 untuk berkomunikasi
If Winsock1.State = 2 Then Winsock1.Close
Winsock1.LocalPort = "1234"
Winsock1.Listen
End Sub
________________________________________________________________________

'tombol perintah untuk koneksi ke komputer yang lain
'di alamat 192.168.100.2
'dengan port 1234
Private Sub Command2_Click()
On Error GoTo out
Winsock2.Close
Winsock2.Connect "192.168.100.2",1234
Exit Sub
out:
MsgBox "Gagal kirim pesan!", vbCritical
End Sub
________________________________________________________________________

'tombol perintah untuk mengirim data kepada socket
'yang terhubung dengan port yang 'dibuka oleh windsock1 yaitu port 1234
Private Sub Command1_Click()
On Error GoTo out
Winsock1.SendData Text1.Text
Exit Sub
out:
MsgBox "Gagal kirim pesan!", vbCritical
End Sub
________________________________________________________________________

'event pada socket jika terjadi permintaan koneksi
Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
Winsock2.Close 'tutup socket
Winsock2.Accept requestID 'kemudian baru terima request id
End Sub
________________________________________________________________________

'event pada socket jika terjadi penerimaan data
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim dataz$
'ambil data yang diterima disimpan pada variable dataz
Winsock2.GetData dataz
'tampilkan hasil data yang telah diterima pada textbox
Text2.Text = Text2.Text + vbCrLf + CStr(Time) + ">>" + dataz
End Sub
________________________________________________________________________

'event pada socket jika terjadi permintaan koneksi
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close 'tutup koneksi
Winsock1.Accept requestID 'kemudian baru terima request id
End Sub
________________________________________________________________________

'event pada socket jika terjadi penerimaan data
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim dataz$
'ambil data yang diterima disimpan pada variable dataz
Winsock1.GetData dataz
'tampilkan hasil data yang telah diterima pada textbox
Text2.Text = Text2.Text + vbCrLf + CStr(Time) + ">>" + dataz
End Sub
________________________________________________________________________

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Winsock1.Close
End Sub
________________________________________________________________________

Tentunya penggunaan satu socket hanya untuk satu koneksi, jadi kalo kamu pengen dapat berkomunikasi lebih dari dua komputer, kamu bisa membuat array untuk object winsock kamu. Caranya ambil Winsock 1 saja letakkan di form, kemudian pada properti winsock di bagian index isikan 0. Kemudian pada setiap kamu mau melakukan komunikasi kamu harus meload object tersebut. Misal mau melakukan koneksi pada komputer 1 maka lakukan perintah
.....
Load Winsock(1)
Winsock(1).Connect "193.168.100.2",1234

dan lakukan hal yang sama jika ingin berkomunikasi dengan komputer yang lain. Catatan, jika koneksi telah berakhir hendaklah mengunload object yang tidak terpakai, dengan tambahan pula ada baiknya sebuah variable yang mencatat objek index apa saja yang terpakai dan yang tidak terpakai. Misalkan dengan menggunakan variabel class Collection. Ya.. itu saja, semoga bisa membantu bagi kamu-kamu yang pengen buat aplikasi chatting sendiri ala kamu sendiri. Selamat mencoba.