APLIKASI DESKTOP
“INTRANET MESSENGER CLIENT & SERVER”
Bambang Kelana Simpony Tuti Alawiyah Deddy Supriadi
Ratningsih Agung Baitul Hikmah Iqbal Dzulfikar Iskandar
Melisa Winda Pertiwi Mira Kusmira Yanti Apriyani
Haerul Fatah Yani Sri Mulyani
Taufik Wibisono
Copyright (c)
BAB I
LANGKAH PENGGUNAAN
1.1. Spesifikasi Rancangan Program Input
Langkah awal untuk memulai menggunakan program ini yaitu dengan menjalankan terlebih dahulu aplikasi Intranet Messenger Server yang selanjutnya akan ditulis IM Server.
IM Server ini nantinya akan mengatur komunikasi dari client-client yang connet dan disconnect serta mem-broadcast pesan ke seluruh client. Di jendela IM Server akan ditampilkan informasi IP Address dan nama komputer yang nanti akan dihubungi oleh IM Client. Setelah IM Server berjalan, selanjutnya aplikasi IM Client dijalankan.
Sebagai bentuk masukan pertama, IM Client akan meng-input nomor IP Address ataupun nama komputer dari IM Server yang sedang aktif. Setelah sebelumnya membuka menu connect pada menu utama IM Client. Seperti yang ditampilkan pada gambar dibawah.
Gambar I.1. Tampilan Intranet Messenger Server
Gambar I.2. Tampilan Intranet Messenger Server Berada di System Tray Windows
Keterangan:
Pada program IM Server terdapat lima pilihan menu yang muncul pada system tray yaitu :
1. About IM Server
2. Show Panel (Untuk menampilkan jendela IM Server) 3. Hide Panel (Untuk menyembunyikan jendela IM Server) 4. Delete Icon (Untuk menghapus icon IM Server di system tray) 5. Stop Server (Untuk keluar dari aplikasi IM Server)
Gambar I.3. Tampilan About Intranet Messenger Server
Keterangan:
Program ini digunakan untuk menampilkan informasi program IM Server . Didalamnya terdapat dua tombol yaitu OK (untuk keluar dari About IM Server ini) dan System Info (untuk menampilkan System Information dari computer yang sedang aktif).
Gambar I.3. Tampilan Intranet Messenger Client Keterangan:
Program ini sebagai antar muka dalam berkomunikasi. Pada program IM Client terdapat tiga pilihan menu yaitu:
1. File
a. Sub Menu “Open” (jika diklik maka akan tampil kotak dialog pencarian file teks. Dan jika dibuka maka akan ditampilkan di area percakapan).
b. Sub Menu “Save Talking” (jika diklik maka akan menampilkan kotak dialog untuk menyimpan percakapan dan memberi nama file yang akan disimpan) 2. Connect (untuk memulai dan mengakhiri koneksi ke server)
3. Help
a. Sub Menu “IM Content”
b. Sub Menu “About IM Client”
c. Sub Menu “Bug Report…” (jika di klik maka akan diarahkan untuk mengirimkan e-mail pada programmer jika terdapat bug dalam program ini) Pada form IM Client ini terdapat beberapa utilitas untuk mendukung program ini yaitu Clear (untuk membersihkan area percakapan), Copy Text (Untuk meng-copy area percakapan), Paste Text (untuk mem-paste ke area pengiriman pesan), Font Setting (untuk mengatur tampilan font pada area percakapan), Minimize (untuk menghilangkan jendela IM Client dan menyembunyikannya di area system tray sehingga tidak memenuhi area taskbar), Send Message (untuk mengirimkan pesan), About This Program (informasi program IM Client), Close (untuk keluar dari aplikasi IM Client).
Gambar I.4. Tampilan Help Intranet Messenger Client
Keterangan:
Program ini digunakan untuk menampilkan help (bantuan) cara-cara menggunakan program ini. Bantuan masih dalam Bahasa Indonesia.
Gambar I.5. Tampilan About Intranet Messenger Client Keterangan:
Program ini digunakan untuk menampilkan informasi program IM Client.
Didalamnya terdapat dua tombol yaitu OK (untuk keluar dari About IM Client ini) dan System Info (untuk menampilkan System Information dari komputer yang sedang aktif).
Gambar I.6. Intranet Messenger Client saat input IP Address 1.2. Spesifikasi Rancangan Program Output
Sebagai bentuk keluarannya, setelah client bisa menghubungi server pengiriman pesan pun bisa dilakukan. Seperti yang ditampilkan pada gambar berikut.
Gambar I.7. Contoh Pengiriman Pesan di Intranet Messenger Client Tampilan percakapan selain ditampilkan di area pesan, juga bisa disimpan ke dalam file teks biasa. Yang nantinya digunakan untuk history. Percakapan disimpan dengan cara menekan tombol Ctrl+S ataupun membuka menu File lalu Save Talking.
Gambar I.8. Contoh Menyimpan History Pesan di Intranet Messenger Client
BAB II
KODE PROGRAM
2.1. Kode Program Intranet Messenger Server
1. Form ( frmAbout.frm ) General Declarations
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub cmdOK_Click() Unload Me
End Sub
Private Sub Form_Load()
Me.Caption = "About " & App.Title
lblVersion.Caption = "Version " & App.Major & "." & App.Minor & "." &
App.Revision
lblTitle.Caption = App.Title End Sub
Private Sub Label4_Click()
ShellExecute Me.hwnd, vbNullString, "http://www.blogb.co.cc", vbNullString, "C:\", 1
End Sub
Private Sub Label5_Click()
ShellExecute Me.hwnd, vbNullString, "mailto:[email protected]", vbNullString, "C:\", 1
End Sub
2. Form ( fServer.frm ) General Declarations
Dim jml As Integer Dim arrIndex() As Integer Dim ket As String
Private Sub kirim(ByVal pesan As String) Dim a As Integer
On Error Resume Next For a = 1 To jml
VServer(a).SendData pesan & vbCrLf DoEvents
Next End Sub
Private Sub Form_Load() Timer1.Enabled = True On Error GoTo buka With VServer(0) .LocalPort = 3030 .Listen
End With
ket = "Listening to port : " & VServer(0).LocalPort lstKet.AddItem (ket)
ReDim arrIndex(0) jml = 1
LbServer.Caption = vbCrLf & vbCrLf & vbCrLf & vbCrLf & _ vbCrLf & vbCrLf & vbCrLf & vbCrLf & _
vbCrLf & vbCrLf & "Host Name : " &
VServer(0).LocalHostName _
& vbCrLf & "IP Address : " & VServer(0).LocalIP Exit Sub
buka:
MsgBox "Port is open by other application or IM Server is on !", vbCritical End
End Sub
Private Sub mnuAbout_Click() frmAbout.Show
End Sub
Private Sub mnuClose_Click() Unload Me
Set Fserver = Nothing End Sub
Private Sub mnuDelete_Click() Call RemoveFromTray End Sub
Private Sub mnuHide_Click() Me.Hide
End Sub
Private Sub mnuShow_Click() Me.Show
End Sub
Function CekMap() As Integer Dim i As Integer
For i = 1 To UBound(arrIndex) If (arrIndex(i) = 0) Then CekMap = i
Exit Function End If
Next i
jml = jml + 1
ReDim Preserve arrIndex(jml) CekMap = jml
End Function
Private Sub VServer_ConnectionRequest(index As Integer, ByVal requestID As Long)
Dim taruh As Integer
ket = "Connection request id " & requestID & " from " &
VServer(index).RemoteHostIP lstKet.AddItem (ket)
If jml = 1 Then taruh = 1 Else
taruh = CekMap End If
Load VServer(taruh) VServer(taruh).Close
VServer(taruh).Accept requestID arrIndex(taruh) = CekMap End Sub
Private Sub VServer_DataArrival(index As Integer, ByVal bytesTotal As Long)
Dim pesan As String
VServer(index).GetData pesan If Left(pesan, 5) = "close" Then
ket = "Connection closed : " & VServer(index).RemoteHostIP lstKet.AddItem (ket)
VServer(index).Close
Unload VServer(index) arrIndex(index) = 0
Exit Sub End If
kirim "<" & VServer(index).RemoteHostIP & "># " & pesan & vbCrLf &
"Message send at : " & CStr(Time) End Sub
Private Sub RemoveFromTray().
Call Shell_NotifyIcon(NIM_DELETE, nid) End Sub
Private Sub Form_Unload(Cancel As Integer) Call RemoveFromTray
End Sub
2.2. Kode Program Intranet Messenger Client
1. Form ( fClient.frm ) General Declarations
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const VChat = "IM Client --- "
Dim nid As NOTIFYICONDATA
Sub minimize_to_tray() Me.Hide
nid.cbSize = Len(nid) nid.hwnd = Me.hwnd nid.uId = vbNull
nid.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
nid.uCallBackMessage = WM_MOUSEMOVE nid.hIcon = Me.Icon
nid.szTip = "IM Client. Click to show window." & vbNullChar Shell_NotifyIcon NIM_ADD, nid
End Sub
Private Sub cmdClear_Click() Dim X As Byte
X = MsgBox("Clear your talk now?", vbOKCancel, "Information") If X = vbOK Then
txview.Text = ""
End If End Sub
Private Sub cmdClear_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdInfo.Caption = "Clear the message field"
End Sub
Private Sub cmdClose_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdInfo.Caption = "Close the program"
End Sub
Private Sub cmdCopy_Click() txview.SelStart = 0
txview.SelLength = Len(txview) Clipboard.SetText txview.Text End Sub
Private Sub cmdCopy_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdInfo.Caption = "Copy all content of message field to clipboard"
End Sub
Private Sub cmdFont_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdInfo.Caption = "Font setting allow to customize message field"
End Sub
Private Sub cmdInfo_Click() frmAbout.Show
End Sub
Private Sub cmdInfo_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdInfo.Caption = "About This Program"
End Sub
Private Sub cmdMin_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdInfo.Caption = "Minimize program to system tray"
End Sub
Private Sub cmdPaste_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
cmdInfo.Caption = "Paste clipboard content to message field"
End Sub
Private Sub Form_Unload(Cancel As Integer) Shell_NotifyIcon NIM_DELETE, nid
End Sub
Private Sub cmdClose_Click()
If mnConnect.Caption = "DisConnect" Then MsgBox "DisConnect connection first"
Else keluar End If End Sub
Sub keluar() Dim p As String
p = MsgBox("Are you sure, you want to exit?", vbOKCancel + vbExclamation, "Information")
If p = vbOK Then Unload Me
Set FClient = Nothing End If
End Sub
Private Sub cmdFont_Click() With Me.cdb
.Flags = cdlCFBoth Or cdlCFEffects .FontBold = Me.txview.FontBold .FontItalic = Me.txview.FontItalic .FontName = Me.txview.FontName .FontSize = Me.txview.FontSize
.FontUnderline = Me.txview.FontUnderline .FontStrikethru = Me.txview.FontStrikethru .Color = Me.txview.ForeColor
.ShowFont
Me.txview.FontBold = .FontBold Me.txview.FontItalic = .FontItalic Me.txview.FontName = .FontName Me.txview.FontSize = .FontSize
Me.txview.FontUnderline = .FontUnderline Me.txview.FontStrikethru = .FontStrikethru Me.txview.ForeColor = .Color
Me.txview.Refresh End With
End Sub
Private Sub cmdMin_Click() minimize_to_tray
End Sub
Private Sub cmdPaste_Click() txkirim.Text = Clipboard.GetText End Sub
Private Sub cmdsend_Click() sending
End Sub
Sub sending()
If VClient.State = sckConnected Then VClient.SendData txkirim.Text txkirim.Text = ""
cmdInfo.Caption = "Message send at @ " & Now Else
MsgBox "Not Connected." + vbCrLf + "Try connect to server first", vbCritical, "Information"
End If End Sub
Private Sub cmdsend_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.cmdsend.FontBold = True
cmdInfo.Caption = "Send the above message (NET SEND like)"
End Sub
Private Sub Form_Load() VClient.RemotePort = 3030 Me.Caption = VChat & "Off Line"
LbIP.Caption = "Your IP Address : " & VClient.LocalIP LbIP.FontBold = True
intCount = 0
Me.tmr.Enabled = True End Sub
Private Sub Form_MouseMove(Button As Integer, _ Shift As Integer, X As Single, Y As Single)
Me.cmdsend.FontBold = False
cmdInfo.Caption = "Intranet Messenger Client (c) 2008 blogb.co.cc"
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = 0 Then
Cancel = 1
MsgBox ("Please, press button Close") End If
End Sub
Private Sub Form_Resize()
Me.txview.Width = Me.ScaleWidth - 1500 Me.txkirim.Width = Me.ScaleWidth - 1500 Me.cmdsend.Width = Me.ScaleWidth - 1500 Me.cmdInfo.Width = Me.ScaleWidth – 1500
cmdClear.Left = (Me.ScaleWidth / 1) - (cmdClear.Width / 1) cmdCopy.Left = (Me.ScaleWidth / 1) - (cmdClear.Width / 1) cmdPaste.Left = (Me.ScaleWidth / 1) - (cmdPaste.Width / 1)
cmdFont.Left = (Me.ScaleWidth / 1) - (cmdFont.Width / 1) cmdMin.Left = (Me.ScaleWidth / 1) - (cmdMin.Width / 1) cmdClose.Left = (Me.ScaleWidth / 1) - (cmdClose.Width / 1) End Sub
Private Sub mnAbout_Click() frmAbout.Show
End Sub
Private Sub mnBug_Click()
ShellExecute Me.hwnd, vbNullString, "mailto:[email protected]", vbNullString, "C:\", 1
End Sub
Private Sub mnConnect_Click() Dim ips As String
If mnConnect.Caption = "Connect" Then
ips = InputBox("Connect To..", "IP/Host Server Name") If ips <> "" Then
VClient.RemoteHost = ips VClient.Close
VClient.Connect
mnConnect.Caption = "DisConnect"
End If Else
If VClient.State = sckConnected Then VClient.SendData "close"
Else
mnConnect.Caption = "Connect"
VClient.Close End If
End Sub
Private Sub mnIM_Click() frmContent.Show
End Sub
Private Sub mnOpen_Click() Dim nama_file As String On Error GoTo salah_lagi
cdsave.CancelError = True
cdsave.Filter = "Text Files (*.txt)|*.txt"
cdsave.FilterIndex = 0 cdsave.ShowOpen
nama_file = cdsave.FileName
Open nama_file For Input As #1 txview.Text = Input(LOF(1), #1) Close #1
salah_lagi: Exit Sub End Sub
Private Sub mnSave_Click() Dim nama_file, X As Integer On Error GoTo salah
cdsave.CancelError = True
cdsave.Filter = "Text Files (*.txt)|*.txt"
cdsave.FilterIndex = 0 cdsave.ShowSave
nama_file = cdsave.FileName If Len(Dir$(nama_file)) <> 0 Then
X = MsgBox("This file already exists: " + nama_file + ", do you want replace it?", vbYesNo + vbCritical, "Error")
If X = vbNo Then Exit Sub End If
Open nama_file For Output As #1 Print #1, txview.Text
Close #1 salah: Exit Sub End Sub
Private Sub txkirim_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then
sending End If End Sub
Private Sub txview_GotFocus() Me.txview.Locked = True End Sub
Private Sub VClient_Close() VClient.Close
Me.Caption = VChat & "Off Line"
mnConnect.Caption = "Connect"
txview.Text = ""
End Sub
Private Sub VClient_Connect() Me.Caption = VChat & "On Line"
End Sub
Private Sub VClient_DataArrival(ByVal bytesTotal As Long) Dim pesan As String
VClient.GetData pesan
txview.Text = txview.Text & pesan
End Sub
2. Form ( frmAbout.frm ) General Declarations
Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub cmdOK_Click() Unload Me
End Sub
Private Sub Form_Load()
Me.Caption = "About " & App.Title
lblVersion.Caption = "Version " & App.Major & "." & App.Minor & "." &
App.Revision
lblTitle.Caption = App.Title End Sub
Private Sub Label4_Click()
ShellExecute Me.hwnd, vbNullString, "http://www.blogb.co.cc", vbNullString, "C:\", 1
End Sub
Private Sub Label5_Click()
ShellExecute Me.hwnd, vbNullString, "mailto:[email protected]", vbNullString, "C:\", 1
End Sub