0% menganggap dokumen ini bermanfaat (0 suara)
3 tayangan

Modul 01 - Pemrograman Socket

Dokumen ini menjelaskan tentang pemrograman socket dalam sistem terdistribusi, termasuk pengertian socket, elemen utama, dan jenis protokol yang digunakan seperti TCP dan UDP. Selain itu, terdapat instruksi praktikum untuk membuat aplikasi sederhana menggunakan socket, termasuk aplikasi chatting dan pengambilan laman web. Dokumen juga mencakup langkah-langkah untuk mengatur lingkungan pengembangan menggunakan Docker dan XAMPP.

Diunggah oleh

Qonita Bela
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
3 tayangan

Modul 01 - Pemrograman Socket

Dokumen ini menjelaskan tentang pemrograman socket dalam sistem terdistribusi, termasuk pengertian socket, elemen utama, dan jenis protokol yang digunakan seperti TCP dan UDP. Selain itu, terdapat instruksi praktikum untuk membuat aplikasi sederhana menggunakan socket, termasuk aplikasi chatting dan pengambilan laman web. Dokumen juga mencakup langkah-langkah untuk mengatur lingkungan pengembangan menggunakan Docker dan XAMPP.

Diunggah oleh

Qonita Bela
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 10

PRAKTIKUM SISTEM TERDISTRIBUSI

JURUSAN TEKNIK INFORMATIKA


UIN MAULANA MALIK IBRAHIM MALANG

MODUL 1
PEMROGRAMAN SOCKET

1.1 Pengertian
Socket adalah interface pada jaringan yang menjadi titik komunikasi antar mesin pada
Internet Protocol. Socket adalah titik komunikasi dari lalu lintas komunikasi dari lalu lintas
komunikasi antar proses di dalam sebuah jaringan komputer.
• Contoh :
1. Chat
2. Transfer File (seperti FIleZilla, WinSCP)
3. Transaksi-transaski penting seperti Mesin ATM di Bank
4. Game online
5. Monitoring jaringan
6. Aplikasi-aplikasi broadcast seperti YouTube

• Elemen Utama
1. Protokol (TCP/UDP)
2. Local IP Address
3. Local Port
4. Remote IP Address
5. Remote Port

1
PRAKTIKUM SISTEM TERDISTRIBUSI
JURUSAN TEKNIK INFORMATIKA
UIN MAULANA MALIK IBRAHIM MALANG

Gambar 1. Bagan Socket Client Server

2
PRAKTIKUM SISTEM TERDISTRIBUSI
JURUSAN TEKNIK INFORMATIKA
UIN MAULANA MALIK IBRAHIM MALANG

• Pengiriman data pada aplikasi socket


1. TCP (Transmission Control Protocol) Aplikasi FTP, SMTP, SSH, TELNET, aplikasi
chat, transfer file, ataupun transaksi-transaksi penting seperti Mesin ATM di Bank.

Gambar 2. TCP

2. UDP (User Data Protocol) Aplikasi SunRPC, SNMP, DNS, TFTP, aplikasi monitoring
jaringan, game online dan aplikasi-aplikasi broadcast seperti YouTube.

Gambar 3. UDP
• Port
Port merupakan sebuah koneksi data virtual yang digunakan aplikasi untuk bertukar data
secara langsung. Contoh :
- HTTP 80
- HTTPS 443
- FTP 21
- SSH 22
- TELNET 23
- DNS 53

3
PRAKTIKUM SISTEM TERDISTRIBUSI
JURUSAN TEKNIK INFORMATIKA
UIN MAULANA MALIK IBRAHIM MALANG

• Jenis Port
- Well-known ports
Merupakan port yang telah digunakan secara internal oleh Sistem, misalnya port
untuk service HTTP, HTTPS, FTP, SSH, DNS dan seterusnya. Port yang telah
digunakan ini adalah port 0 sampai dengan port 1023.

- Registered ports
Port ini dapat digunakan dalam aplikasi Anda, range-nya adalah port 1024 hingga
port 49151 dan dapat dipilih secara bebas.
1. Dynamic/Private ports
Dari port 49152 sampai dengan port 65535.

1.2 Pemrograman Socket


Pada praktikum kali ini, pastikan Anda sudah meng-install docker-xampp
(tomsik68/xampp:5) dan gunakan text editor VSCode / Sublime Text untuk mengetikkan
source code. Buatlah folder “socket” yang berisikan file socket.php dan server.php pada
folder “D:\htdocs”. Source code socket.php dan server.php ini hanya dapat dijalankan
pada PHP versi 5. Start container XAMPP 5:

> docker container start xampp5

Akses phpinfo pada localhost menggunakan web browser


http://localhost:8080/dashboard/phpinfo.php dan pastikan PHP extension sockets sudah aktif.

Gambar 4. PHP Sockets Extension

4
PRAKTIKUM SISTEM TERDISTRIBUSI
JURUSAN TEKNIK INFORMATIKA
UIN MAULANA MALIK IBRAHIM MALANG

1.2.1 Aplikasi sederhana untuk mengambil Laman Web Google dengan Pemrograman Socket.
Berikut ini merupakan contoh mengambil laman web di google menggunakan
pemrograman socket.

1. Pada file socket.php, ketikkan source code berikut dan simpan file tersebut di
“D:\htdocs\socket”.

Gambar 5. File socket.php


2. Pastikan perangkat terkoneksi dengan internet.
3. Jalankan file socket.php melalui web browser di url
5
PRAKTIKUM SISTEM TERDISTRIBUSI
JURUSAN TEKNIK INFORMATIKA
UIN MAULANA MALIK IBRAHIM MALANG

http://localhost:8080/www/socket/socket.php

Gambar 6. Menjalankan file socket.php melalui web browser

1.2.2 Aplikasi Chatting dengan Pemrograman Socket


Berikut ini merupakan contoh membangun aplikasi chatting menggunakan
pemrograman socket.
1. Ketikkan source code berikut pada file server.php dan simpan file tersebut di
“D:\htdocs\socket”.

<?php
error_reporting(1);
set_time_limit (0);

$address = "0.0.0.0";
$port = 5000;
$max_clients = 5;

// Creating a socket
if(!($sock = socket_create(AF_INET, SOCK_STREAM, 0)))
{ // Error handling
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldn't create socket: [$errorcode] $errormsg \n");
}
echo "Socket created \n";

// Bind the source address


if(!socket_bind($sock, $address, $port))
{ // Error handling
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not bind socket : [$errorcode] $errormsg \n");
}
echo "Socket bind OK \n";

// Listens for a connection on a socket


if(!socket_listen ($sock, $max_clients))
{ // Error handling
6
PRAKTIKUM SISTEM TERDISTRIBUSI
JURUSAN TEKNIK INFORMATIKA
UIN MAULANA MALIK IBRAHIM MALANG

$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not listen on socket : [$errorcode] $errormsg
\n");
}
echo "Socket listen OK \n";

echo "Waiting for incoming connections... \n";

//array of client sockets


$client_socks = array();

//array of sockets to read


$read = array();

//start loop to listen for incoming connections and process


existing connections
while (true)
{ //prepare array of readable client sockets
$read = array();

//first socket is the master socket


$read[0] = $sock;

//now add the existing client sockets


for ($i = 0; $i < $max_clients; $i++)
{ if($client_socks[$i] != null)
{ $read[$i+1] = $client_socks[$i];
}
}

//Runs the select() system call on the given arrays of


sockets
if(socket_select($read, $write, $except, null) === false)
{ // Error handling
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Could not listen on socket : [$errorcode]
$errormsg \n");
}

7
PRAKTIKUM SISTEM TERDISTRIBUSI
JURUSAN TEKNIK INFORMATIKA
UIN MAULANA MALIK IBRAHIM MALANG

//if ready contains the master socket, then a new


connection has come in
if (in_array($sock, $read))
{ for ($i = 0; $i < $max_clients; $i++)
{ if ($client_socks[$i] == null)
{ //Accepts a connection on a socket
$client_socks[$i] = socket_accept($sock);

//display information about the client who is


connected
if(socket_getpeername($client_socks[$i],
$address, $port))
{ echo "Client $address : $port is now
connected to Us. \n";
}

//Send Welcome message to client


$message = "Welcome to php socket server
version 1.0 \n";
$message .= "Enter a message and press enter.
I shall reply back \n";
socket_write($client_socks[$i], $message);
break;
}
}
}

//check each client if they send any data


for ($i = 0; $i < $max_clients; $i++)
{ if (in_array($client_socks[$i], $read))
{ //Reads a maximum of length bytes from a socket
$input = socket_read($client_socks[$i], 1024);

if ($input == null)
{ //zero length string meaning disconnected,
remove and close the socket
// remove the socket
unset($client_socks[$i]);
// close the socket
socket_close($client_socks[$i]);
}

$n = trim($input);
$output = $client_socks[$i]." Said: ... $input";
echo "Sending output to client \n";

//send response to client

8
PRAKTIKUM SISTEM TERDISTRIBUSI
JURUSAN TEKNIK INFORMATIKA
UIN MAULANA MALIK IBRAHIM MALANG

//socket_write($client_socks[$i], $output);

// send response to other client


foreach (array_diff_key($client_socks, array($i
=> 0)) as $client_sock) {
socket_write($client_sock, $output);
}
}
}
}

2. Buat container xampp5server dengan port 5000 di Command Prompt


> docker run --name xampp5server -p 5000:5000 -p 8085:80 -p 3385:3306 -p 2285:22 -d
-v D:\htdocs:/www tomsik68/xampp:5

Jalankan server chat pada file server.php tersebut


> docker exec -ti xampp5server /opt/lampp/bin/php /www/socket/server.php

Jika ingin menghentikan container xampp5server jalankan perintah


> docker container stop xampp5server

Jika ingin menjalankan container xampp5server jalankan perintah


> docker container start xampp5server

3. Pastikan perangkat terkoneksi dengan internet. Tambahkan Repository pada Debian Server
di VirtualBox lalu install Telnet.
$ sudo apt-get update
$ sudo apt-get install -y telnet
4. Shutdown Debian Server dengan perintah
$ sudo /sbin/init 0
atau
$ sudo /sbin/shutdown -P now

9
PRAKTIKUM SISTEM TERDISTRIBUSI
JURUSAN TEKNIK INFORMATIKA
UIN MAULANA MALIK IBRAHIM MALANG

5. Lakukan Cloning dengan klik kanan pada Debian Server, pilih “Clone” lalu
pilih “Full clone” pada langkah selanjutnya.

Gambar 7. Debian Server Cloning


6. Jalankan Debian Server Clone dan ganti IP Address pada Debian Server Clone agar tidak
bentrok dengan IP Address Debian Server. Reboot Debian Server Cloning.
$ sudo nano /etc/network/interfaces
$ sudo /sbin/reboot
7. Jalankan kedua Debian Server tersebut dan masing-masing server menjalankan Telnet ke
IP Address 192.168.56.1 (Windows) port 5000 untuk mencoba aplikasi chatting.
$ telnet 192.168.56.1 5000
8. Setelah selesai mencoba aplikasi chatting, hapus Debian Server Clone dan jangan
menghapus Debian Server. Klik kanan pada Debian Server Clone lalu pilih Remove untuk
menghapus Debian Server Clone.

10

Anda mungkin juga menyukai