Socket Programming adalah protokol yang mempunyai metode untuk membuat koneksi antar antara perangkat dalam jaringan. Socket programming bertujuan agar satu program bisa berinteraksi dengan program lainnya dalam satu jaringan.
Ada dua jenis penggunaan protokol komunikasi untuk Socket Programming :
- TCP / IP (Transmission Control Protocol / Internet protokol)
- UDP / IP (User Datagram Protocol / Internet protocol).
Penggunaan Kode
Pada VB.Net untuk membuat koneksi antar antara perangkat dalam jaringan bisa menggunakan namespace System.Net.Sockets. Namespace ini berisi kelas Socket yang akan melakukan segala sesuatu untuk membuat koneksi antar antara perangkat dalam jaringan, menggunakan dua kelas untuk mewakili kedua ujung koneksi socket. TcpClient mewakili akhir klien, sedangkan TcpListener mewakili end server.
Kita perlu minimal dua program untuk menjalankan socket program . Sebuah Socket Server Program (Server) dan Socket Program Klien (Client).
- Program Server: Server Socket Program berjalan pada komputer memiliki soket yang terikat dengan Nomor Port pada komputer itu dan mendengarkan permintaan klien dan ketika server mendapatkan permintaan dari Klien, Server mengirimkan respon terhadap Klien
- Program Klien: Klien Program Socket harus mengetahui IP Address (Hostname) dan port yang digunakan dari komputer yang menjadi Server untuk melakukan request. klien melakukan koneksi ke server dan mengirim permintaan, dan juga menerima respon dari server
Server
Program ini bertindak sebagai Server dan mendengarkan permintaan klien. Sebagai contoh kita tetapkan server menggunakan port 8888 untuk Socket Server, itu adalah sebuah instance dari TcpListener Kelas VB.NET.
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Module Module1
Sub Main()
Dim port As Integer = 8888
Dim ipaddr As IPAddress = IPAddress.Parse("127.0.0.1")
Dim serverSocket As New TcpListener(ipaddr, port)
Dim clientSocket As TcpClient
serverSocket.Start()
msg("Server Started")
clientSocket = serverSocket.AcceptTcpClient()
msg("Accept connection from client")
While (True)
Try
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("Data from client - " + dataFromClient)
Dim serverResponse As String = "Data Diterima"
Dim sendBytes As [Byte]() = _
Encoding.ASCII.GetBytes(serverResponse)
networkStream.Write(sendBytes, 0, sendBytes.Length)
networkStream.Flush()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End While
clientSocket.Close()
serverSocket.Stop()
msg("exit")
Console.ReadLine()
End Sub
Sub msg(ByVal pesan As String)
pesan.Trim()
Console.WriteLine(" >> " + pesan)
End Sub
End Module
Pertama Anda harus mulai running Program Server, Langkah selanjutnya adalah mulai Program Client.
Sekarang Server dan Klien bisa terhubung. Jika Anda ingin menguji komunikasi, Anda klik Connect di klien, setelah terkoneksi, klik tombol Send, maka Anda dapat melihat perubahan pada layar Server dan Client.
Client
Klien harus terhubung ke Port dan IP Address dari Server di sini kita berikan sebagai 127.0.0.1, karena Server dan klien berjalan pada mesin yang sama.
Imports System.Net.Sockets
Public Class Form1
Dim clientSocket As New TcpClient()
Dim stat As Boolean = False
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If stat = False Then
clientSocket.Connect("127.0.0.1", 8888)
Label1.Text = "Client Socket Program - Server Connected ..."
stat = True
Button1.Text = "Send Message"
Else
Dim serverStream As NetworkStream = clientSocket.GetStream()
Dim outStream As Byte() = _
System.Text.Encoding.ASCII.GetBytes(TextBox2.Text + "$")
serverStream.Write(outStream, 0, outStream.Length)
serverStream.Flush()
Dim inStream(10024) As Byte
serverStream.Read(inStream, 0, CInt(clientSocket.ReceiveBufferSize))
Dim returndata As String = System.Text.Encoding.ASCII.GetString(inStream)
msg("Data Server : " + returndata)
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = "Client Started"
End Sub
Sub msg(ByVal pesan As String)
TextBox1.Text = TextBox1.Text + Environment.NewLine + " >> " + pesan
End Sub
End Class
Note
Sebelum Anda menjalankan Program Klien Anda harus mulai Program server terlebih dahulu.
No Comments
Leave a comment Cancel