Bab 4 Protokol TCP UDP - Remote Hal. 1
BAB 4
PROTOKOL TCP UDP - REMOTE
Daftar Isi:Pendahuluan ... 1
UDP Remote ... 2
UDP Server ... 2
Komunikasi Program client server UDP – Remote ... 4
UDP Client ... 7
TCP Remote ... 8
TCP Server dengan console ... 10
P EN DAHU LU AN
Dalam modul ini akan dijelaskan secara garis besar apa yang akan kita pelajari, yaitu:
• Menggabungkan modul sebelumnya yaitu system windows. Terdapat dua aplikasi yaitu aplikasi client dan aplikasi server. Aplikasi client akan mengirimkan pesan, misalkan cpu, maka aplikasi client menerima pesan tersebut dan menjalankan program untuk mendapatkan sistem informasi CPU di komputer server yang selanjutnya hasil tersebut akan dikirimkan ke aplikasi client, dan aplikasi client menampilkan informasi cpu komputer server.
• Aplikasi yang akan diterapkan yaitu aplikasi TCP Server dan aplikasi TCP Cient. Serta UDP Server dan UDP Client.
• Pengujian system windows seperti yan dilakukan modul sebelumnya yaitu mendapatkan username, system cpu, memori, proses dan lainnya.
Bab 4 Protokol TCP UDP - Remote Hal. 2 UDP REM OTE
UDP SERVER
Dalam aplikasi UDP Server, tampilan form seperti pada gambar dibawah ini dengan properti: • Label
• List Box
Gambar 1. 1
Dengan mempelajari program sebelumnya sistem windows, maka beberapa library kita daftarkan untuk mengenal perintah perintah baris program nantinya, dan tambahan untuk socket UDP maka beberapa tambahan library seperti System.NET dan System.Net.Sockets serta System.Threading. lengkapnya seperti dibawah ini:
• Imports System.Threading • Imports System.Net • Imports System.Net.Sockets • Imports System.Text • Imports System • Imports System.Drawing • Imports Microsoft.Win32
Bab 4 Protokol TCP UDP - Remote Hal. 3
• Imports System.Diagnostics
Untuk mengenali pesan yang dikirimkan oleh UDP Client kemudian UDP Server melakukan fungsi program yang didefinisikan. Karena umumnya user dapat mengetikan apa pun, yang diinginkan. Kemudian kita set jika user mengetikan sesuatu..maka sesuatu itu akan diproses oleh server. Kita listkan apa yang akan diketikan oleh user, yaitu:
• User: untuk mendapatkan username server
• Memori: untuk mendapatkan alokasi memori yang dimiliki server • R: untuk mendapatkan resolusi layar server
• Reg: untuk mendapatkan nama prosesor dan detail dari CPU server.
Prosedur yang digunakan VB.NET menggunakan thread, sehingga kita tidak bisa secara langsung menggunakan objek yang digunakan, misalkan dalam program kita menggunakan listbox.items.add (“pesan”) ke proses pengiriman server ke client. VB.NET tidak dapat menggunakan thread dari listbox secara berulang-ulang.
Untuk mensiasati hal tersebut, maka digunakan sebuah prosedur, ketika listbox digunakan maka listbox akan di hapus atau direstart kembali untuk dapat digunakan. Jika di program pada baris dibawah ini untuk memanggil kembali thread listbox
Private Sub UpdateLblStatus(ByVal tempStr As String) ListBox1.Items.Add(tempStr)
End Sub
Dan untuk melepas /merestart listbox anda dapat melihat fungsi dari
Private Sub UpdateLblStatusThreadSafe(ByVal tempStr As String)
Dan variabel Private Delegate Sub updateLblStatus_dlgt(ByVal tempStr As String) digunakan untuk variabel global dalam sebuah form.
Port yang akan digunakan adalah 8080. Anda dapat mengganti dengan angka yang lain, yaitu dari 1024 sampai 65.000. dengan catatan nantinya aplikasi client menginputkan data ip server dan port server yang sesuai. Anda dapat lihat baris program Dim udpClient100 As New UdpClient(8080) untuk menset port yang digunakan di prosedur serverThread. Dan untuk mengaktifkan UDP server baris program dilakukan di
Bab 4 Protokol TCP UDP - Remote Hal. 4 Private Sub udpserver_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load saat program dijalankan oleh server maka program UDP langsung aktif.
Ketika aplikasi server menerima koneksi dari aplikasi client. Maka aplikasi server menunggu selalu aplikasi client untuk pesan yang akan diterima dan melakukan proses sesuai dengan identifikasi yang kita telah setting sebelumnya. Jika anda perhatikan dibaris prosedur Public Sub serverThread(), maka terdapat perintah while true untuk menyatakan apakah ada pesan masuk atau tidak.
Untuk proses penerimaan pesan dari client ke server. Dalam VB.NET proses mendapatkan pesan. Aplikasi server akan menerima dalam bentuk byte. Proses byte ini akan ditampung kedalam sebuah varibel, kemudian untuk menampilkan di terjemahkan kedalam bentuk string. Contoh kode program yang digunakan:
receiveBytes = udpClient100.Receive(RemoteIpEndPoint)
Dim returnData As String = Encoding.ASCII.GetString(receiveBytes)
a = RemoteIpEndPoint.Address.ToString() + " Pesan: " +
returnData.ToString
UpdateLblStatusThreadSafe(a)
KOMUN I KAS I P ROG RAM C LIEN T S ERVE R U DP – REMOT E
UDP Client mengirimkan pesan “user” ke UDP Server, maka UDP Server menampilkan user yang digunakan di komputer UDP Server.
UDP Client mengirimkan pesan “memori” ke UDP Server, maka UDP Server menampilkan memori yang digunakan di komputer UDP Server.
UDP Client mengirimkan pesan “r” ke UDP Server, maka UDP Server menampilkan resolusi r yang digunakan di komputer UDP Server.
UDP Client mengirimkan pesan “reg” ke UDP Server, maka UDP Server menampilkan identifikasi, prosesor yang digunakan di komputer UDP Server.
Bab 4 Protokol TCP UDP - Remote Hal. 5 Kode Program UDP Server
Kode Program UDP Server
Imports System.Threading Imports System.Net Imports System.Net.Sockets Imports System.Text Imports System Imports System.Drawing Imports Microsoft.Win32 Imports System.Diagnostics Public Class udpserver
Private Delegate Sub updateLblStatus_dlgt(ByVal tempStr As String)
Private Sub udpserver_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim thdUDPServer = New Thread(New ThreadStart(AddressOf _ serverThread))
thdUDPServer.Start() End Sub
Public Sub serverThread()
Dim udpClient100 As New UdpClient(8080) Dim a, banding, c As String
Dim bnds As Rectangle = My.Computer.Screen.Bounds Dim m_LM As RegistryKey
Dim m_HW As RegistryKey Dim m_Des As RegistryKey Dim m_System As RegistryKey Dim m_CPU As RegistryKey Dim m_Info As RegistryKey m_LM = Registry.LocalMachine m_HW = m_LM.OpenSubKey("HARDWARE") m_Des = m_HW.OpenSubKey("DESCRIPTION") m_System = m_Des.OpenSubKey("SYSTEM") m_CPU = m_System.OpenSubKey("CentralProcessor") m_Info = m_CPU.OpenSubKey("0") While True
Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0) Dim receiveBytes As Byte()
Bab 4 Protokol TCP UDP - Remote Hal. 6 Dim returnData As String =
Encoding.ASCII.GetString(receiveBytes)a =
RemoteIpEndPoint.Address.ToString() + " Pesan: " + returnData.ToString
banding = returnData.ToString UpdateLblStatusThreadSafe(a) If (banding = "user") Then
c = System.Environment.UserName UpdateLblStatusThreadSafe(c) End If
If (banding = "memori") Then c = GC.GetTotalMemory(True) UpdateLblStatusThreadSafe(c) End If
If (banding = "r") Then
c = "Resolusi Layar: " & bnds.Width & " by " & bnds.Height
UpdateLblStatusThreadSafe(c) End If
If (banding = "reg") Then
c = "Prosesor =" + m_Info.GetValue("VendorIdentifier") UpdateLblStatusThreadSafe(c)
c = "Prosesor Name =" + Info.GetValue("ProcessorNameString") UpdateLblStatusThreadSafe(c) c = "Identifier = " + m_Info.GetValue("Identifier") UpdateLblStatusThreadSafe(c) c = m_Info.GetValue("~Mhz") & "MHz" UpdateLblStatusThreadSafe(c) End If End While End Sub
Private Sub UpdateLblStatusThreadSafe(ByVal tempStr As String) Dim updateLblStatus_obj As updateLblStatus_dlgt
If ListBox1.InvokeRequired Then
updateLblStatus_obj = New updateLblStatus_dlgt(AddressOf UpdateLblStatusThreadSafe)
If Not updateLblStatus_obj Is Nothing Then
Bab 4 Protokol TCP UDP - Remote Hal. 7 End If Else Call UpdateLblStatus(tempStr) End If End Sub
Private Sub UpdateLblStatus(ByVal tempStr As String) ListBox1.Items.Add(tempStr)
End Sub
End Class
UDP CLIENT
Tampilan UDP Client, ketika aplikasi ditampilkan user menginput alamat ip server, dan menginput pesan yang akan dikirimkan. Seperti tampil dibawah ini
Gambar 1. 2
Kode program
Imports System.Net
Bab 4 Protokol TCP UDP - Remote Hal. 8 Imports System.Text
Imports System.IO
Public Class udpclient1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim udpclient200 As New UdpClient
udpclient200.Connect(TextBox1.Text, 8080)
Dim sendBytes As Byte()
sendBytes = Encoding.ASCII.GetBytes(TextBox2.Text) udpclient200.Send(sendBytes, sendBytes.Length)
End Sub
End Class
Contoh Hasil Pengujian
T C P RE MOT E
Pertama kali kita lakukan desain untuk TCP Client seperti pada gambar 1.3, user mengetikan input alamat server port, proses koneksi, jika selesai maka client mengirimkan pesan ke server, dan server akan mengirimkan balik pesan dari server.
Bab 4 Protokol TCP UDP - Remote Hal. 9 Gambar 1. 3
Kode program yang digunakan untuk Kode Program TCP Client. Kode Program TCP Client Imports System.Net.Sockets
Imports System.Text Public Class Form3
Dim clientSocket As New System.Net.Sockets.TcpClient()
Dim serverStream As NetworkStream
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim serverStream As NetworkStream = clientSocket.GetStream()
Dim a As String
a = TextBox1.Text + "$"
Dim outStream As Byte() =
System.Text.Encoding.ASCII.GetBytes(a)
serverStream.Write(outStream, 0, outStream.Length) serverStream.Flush()
' ListBox1.Items.Clear()
Dim inStream(10024) As Byte
serverStream.Read(inStream, 0,
CInt(clientSocket.ReceiveBufferSize))
Bab 4 Protokol TCP UDP - Remote Hal. 10 System.Text.Encoding.ASCII.GetString(inStream)
msg("Data from Server : " + returndata)
End Sub
Sub msg(ByVal mesg As String)
'ListBox1.Items.Clear()
ListBox1.Items.Add(mesg)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
clientSocket.Connect(TextBox2.Text, TextBox3.Text) Label1.Text = "Client Socket Program - Server Connected ..."
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
clientSocket.Close()
End Sub
End Class
T C P S ERVE R DEN GAN C ON S OLE
Selanjutnya kita membuat TCP Server, untuk hal ini tampilan server, tidak ada form dalam server ini, aplikasi berbentuk console.
Gambar 1. 4
Bab 4 Protokol TCP UDP - Remote Hal. 11 Aplikasi Client jika mengirimkan pesan “andrew” maka TCP Server akan melakukan pembuatan file text.txt di komputer TCP Server.
Aplikasi Client jika mengirimkan pesan “user” maka TCP Server akan proses nama user komputer TCP Server dan TCP Server akan mengirimkan ke TCP Client.
Aplikasi Client jika mengirimkan pesan “detail” maka TCP Server akan melakukan proses spesifikasi CPU komputer TCP Server dan mengirimkan hasilnya ke TCP Client.
Kode program pada TCP Server.
Kode Program TCP Server Imports System.Net.Sockets Imports System.Text Imports System.IO Imports System.Drawing Imports System Imports Microsoft.Win32 Imports System.Diagnostics Imports System.Windows.Forms Module Module1 Sub Main()
Dim serverSocket As New TcpListener(8888)
Dim requestCount As Integer
Dim clientSocket As TcpClient
Dim a, b As String
Dim m_LM As RegistryKey
Dim m_HW As RegistryKey
Dim m_Des As RegistryKey
Dim m_System As RegistryKey
Dim m_CPU As RegistryKey
Dim m_Info As RegistryKey
m_LM = Registry.LocalMachine m_HW = m_LM.OpenSubKey("HARDWARE") m_Des = m_HW.OpenSubKey("DESCRIPTION") m_System = m_Des.OpenSubKey("SYSTEM") m_CPU = m_System.OpenSubKey("CentralProcessor") m_Info = m_CPU.OpenSubKey("0")
Bab 4 Protokol TCP UDP - Remote Hal. 12
'Dim bnds As Rectangle = My.Computer.Screen.Bounds
serverSocket.Start() msg("Server Started")
clientSocket = serverSocket.AcceptTcpClient() msg("Accept connection from client")
requestCount = 0
While (True)
Try
requestCount = requestCount + 1
Dim networkStream As NetworkStream = _
clientSocket.GetStream()
Dim bytesFrom(10024) As Byte
networkStream.Read(bytesFrom, 0,
CInt(clientSocket.ReceiveBufferSize))
Dim dataFromClient As String = _
System.Text.Encoding.ASCII.GetString(bytesFrom) dataFromClient = _ dataFromClient.Substring(0, dataFromClient.IndexOf("$")) msg(dataFromClient) a = dataFromClient If a = "andrew" Then msg2("andrew if then") If File.Exists("d:\testFile.txt") Then
'shows message if testFile exist
MsgBox("File 'testFile' Exist ")
Else
'create the file testFile.txt
File.Create("d:\testFile.txt") MsgBox("File 'testFile' created ")
End If End If If a = "user" Then b = "user" + System.Environment.UserName Dim bi As [Byte]() = Encoding.ASCII.GetBytes(b) Encoding.ASCII.GetBytes(b) networkStream.Write(bi, 0, bi.Length) networkStream.Flush() End If If a = "detail" Then b = "Prosesor =" +
Bab 4 Protokol TCP UDP - Remote Hal. 13 m_Info.GetValue("ProcessorNameString") Dim bi As [Byte]() = Encoding.ASCII.GetBytes(b) Encoding.ASCII.GetBytes(b) networkStream.Write(bi, 0, bi.Length) networkStream.Flush() End If 'kirim data
Dim serverResponse As String = _
"Jawaban Server " +
Convert.ToString(requestCount)
Dim sendBytes As [Byte]() = _
Encoding.ASCII.GetBytes(serverResponse) networkStream.Write(sendBytes, 0, sendBytes.Length) networkStream.Flush() msg(serverResponse) Catch ex As Exception MsgBox(ex.ToString) End Try End While clientSocket.Close() serverSocket.Stop() msg("exit") Console.ReadLine() End Sub
Sub msg2(ByVal mesg2 As String)
mesg2.Trim()
Console.WriteLine(mesg2)
End Sub
Sub msg(ByVal mesg As String)
mesg.Trim()
Console.WriteLine(mesg)
End Sub
Bab 4 Protokol TCP UDP - Remote Hal. 14 Contoh Hasil Pengujian TCP Remote