2. Pengaturan Properti
Komponen
Form 1
Label1
Label2
Label3
Label4
Label5
Label6
Label7
Label8
Label9
TextBox1
TextBox2
TextBox3
TextBox4
Properti
(Name)
Caption
StartupPosition
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Caption
(Name)
Text
(Name)
Text
(Name)
Text
(Name)
Nilai
frmMain
Aplikasi MultiChat
2-CenterScreen
Nama:
Sambung ke:
Port :
Status:
Dialog Pesan:
Pesan:
Data Terkirim:
Data Diterima:
Members:
txtNama
(kosongkan)
txtIP
127.0.0.1
txtPort
1000
txtStatus
Fungsi
Form Aplikasi Chat
Label Nama
Label Sambung ke
Label Port
Label Status
Label dialog
Label Pesan
Label Data Terkirim
Label Data Diterima
Label Members
Tempat memasukkan
nama
Tempat memasukkan IP
Tempat memasukkan
Port
Melihat Status koneksi
MultiLine
ScrollBars
Text
(Name)
Text
(Name)
Text
(Name)
List
Multiselect
Sorted
(Name)
List
(Name)
List
(Name)
Caption
(Name)
Caption
(Name)
Caption
True
2-Vertical
(kosongkan)
txtDialog
(kosongkan)
txtPesan
(kosongkan)
Pengguna
(kosongkan)
2-Extended
True
Terkirim
(kosongkan)
Diterima
(kosongkan)
cmdServer
Server
cmdKlien
Klien
cmdPutus
Putuskan
CommandButton4
(Name)
Caption
cmdHilang
Hilangkan Pilihan
CommandButton5
(Name)
Caption
cmdKeluar
Keluarkan
(Name)
Caption
(Name)
Caption
cmdExit
EXIT
cmdKirim
Kirim
CheckBox
(Name)
chkPrivate
Winsock1
Winsock2
(Name)
(Name)
(Name)
Interval
sckConnection
sckConnect
tmrSendData
1
TextBox5
TextBox6
ListBox1
ListBox2
ListBox3
CommandButton1
CommandButton2
CommandButton3
CommandButton6
CommandButton7
Timer
B; Listing Program
Melihat percakapan
pesan
Tempat menulis pesan
Melihat pemakai aplikasi
Melihat Data terkirim
Melihat Data diterima
Tombol jika anda
menjadi Server
Tombol jika anda
menjadi Klien
Tombol untuk
memutuskan koneksi
Tombol untuk
menghilangkan pilihan
pada daftar pemakai
aplikasi
Tombol untuk
mengeluarkan seseorang
dari koneksi, ini hanya
untuk server
Tombol untuk keluar dari
aplikasi
Tombol untuk
mengirimkan pesan
Untuk memgirimkan
pesan pribadi
Mengontrol koneksi
Mengontrol koneksi
Pengatur waktu data
dikirim
Case SCK_CODE_PESAN
'Perintah ini dikirim ketika seseorang mengirimkan pesan.
'Tunjukkan pesan.
UpdateDialog sData
Beritahu pesan pada semua koneksi yang terbuka.
If mbServer Then
SendToAllButOriginator SCK_CODE_PESAN & sData, viConnection
End If
Case SCK_CODE_NEW_NAME_LIST
' Perintah ini dikirim oleh server sebelum merefresh daftar nama.
Pengguna.Clear
Case SCK_CODE_PEOPLE
'Ini dikirim oleh server untuk memberitahu koneksi-koneksi tersambung nama telah berubah.
'Update daftar nama.
ChangeAddName sParam(sData, 1), sLongParam(sData, 2)
Case SCK_CODE_PRIVATE_MESSAGE
'Perintah ini diterima oleh server ketika seseorang mengirimkan suatu pesan pribadi
'Dapatkan nomor pesan dari para pemakai yang sedang dikirimkan.
iCount = sParam(sData, 1)
baca parameter iCount berikutnya.
'Ini menunjukkan para pengirim pesan.
For i = 2 To iCount + 1
Dapatkan pengguna berikutnya di dalam daftar pengguna bahwa pesan adalah untuk:
iUser = sParam(sData, i)
If iUser = SELF Then
'Pesan untuk server.
'Parameter akhir pesan.
UpdateDialog sLongParam(sData, iCount + 2)
ElseIf iUser <> viConnection Then
'Pastikan pesan tidak dikembalikan kepada orang yang mengirimnya.
'Pesan untuk beberapa pengguna yang terhubung.
SendToPerson SCK_CODE_PESAN & sLongParam(sData, iCount + 2), iUser
End If
Next i
End Select
'Hilangkan perintah yang diproses dari arus data.
' Fungsi ini menarik parameter viNum dari arus data vsData, yang sedang diproses di dalam prosedur
ProcessData.
'Parameter ini adalah panjang karakter PARAM_LEN
sParam = Mid(vsData, PARAM_LEN * (viNum - 1) + 1, PARAM_LEN)
End Function
Public Function sLongParam(vsData As String, viNum As Integer) As String
' Fungsi ini menarik parameter viNum dari arus data vsData, yang sedang diproses di dalam prosedur
ProcessData.
' Parameter ini biasanya berada pada akhir suatu perintah.
sLongParam = Mid(vsData, PARAM_LEN * (viNum - 1) + 1, Len(vsData))
End Function
mSendList.Add vsData
mSendTo.Add "sckConnection(" & viConnection & ")"
End Sub
sckConnect.Close
For i = 1 To miNumConnections
sckConnection(i).Close
Next i
panggil procedure yang ditulis pengguna ke satu file INI.
End Sub
Err_cmdKlien_Click:
MsgBox "Tidak dapat tersambung.", vbExclamation, App.Title
sckConnect.Close
UpdateStatus "Tidak Tersambung."
'sembunyikan/tampilkan fungsi-fungsi tertentu karena koneksi sedang ditutup.
CloseConnection
End Sub
End If
End If
Next i
Else
'Pesan untuk semua pengguna.
SendToAll SCK_CODE_PESAN & txtNama.Text & ": " & txtPesan.Text, False
End If
Else
'Jika anda tersambungkan ke server, kirimkan pesan itu kepada server.
If chkPrivate.Value = vbChecked Then
'Pesan pribadi -hanya untuk para pemakai yang terpilih.
'Lihat yang terpilih di dalam kotak daftar dan kirimkan pesan kepada mereka.
For i = 0 To Pengguna.ListCount - 1
If Pengguna.Selected(i) = True Then
' string dari daftar pesan para pemakai akan dikirimkan.
'string ini akan diuraikan oleh server, yang akan mengalihkan pesan.
sUsers = sUsers & sFormatSend(Pengguna.ItemData(i))
'hitung pesan para pemakai yang sedang dikirim
'Ini diperlukan sehingga server mengetahui bagaimana caranya menguraikan string.
iCount = iCount + 1
End If
Next i
'Jika daftar tidak kosong, kirimkan pesan kepada server
If iCount <> 0 Then
SendToServer SCK_CODE_PRIVATE_MESSAGE & sFormatSend(iCount) & sUsers & "*"
& txtNama.Text & "*: " & txtPesan.Text
End If
Else
pesan untuk semua pengguna.
SendToServer SCK_CODE_PESAN & txtNama.Text & ": " & txtPesan.Text
End If
End If
If chkPrivate.Value = vbChecked Then
Update dialog pesan.
UpdateDialog "*" & txtNama.Text & "*: " & txtPesan.Text
Else
'Update dialog pesan.
UpdateDialog txtNama.Text & ": " & txtPesan.Text
txtPesan.Text = ""
On Error Resume Next
txtPesan.SetFocus
End If
kosongkan kotak pesan.
txtPesan.Text = ""
End Sub
Keluarkan aplikasi.
Unload Me
End Sub
Setelah berhasil disimpan, coba buka 3 kali program tersebut dalam satu komputer.
Masukkan nama server, klien1, klien2 pada aplikasi tersebut, untuk server tekan tombol Server dan
untuk klien tekan tombol Klien. Cobalah untuk mengirim pesan melalui server dan pesan akan
diterima oleh seluruh klien.
Untuk membuat pesan pribadi pada seseorang pilihlah nama pada bagian daftar pengguna dan
centanglah Pesan Pribadi.
Untuk penggunaan dalam jaringan anda harus memasukan IP komputer server baik pada server
maupun klien.