SOCKET PROGRAMMING – TCP & UDP dengan Python

📌 1. Tujuan Praktikum
Setelah mengikuti praktikum ini, mahasiswa mampu:
- Memahami konsep dasar komunikasi berbasis socket.
- Membedakan cara kerja protokol TCP dan UDP.
- Membuat program TCP Client–Server menggunakan Python.
- Membuat program UDP Client–Server menggunakan Python.
- Menguji proses pengiriman dan penerimaan data antar perangkat.
- Menganalisis kelebihan dan kekurangan TCP vs UDP pada IoT.
📘 2. Teori Dasar
2.1 Apa itu Socket?
Socket adalah antarmuka yang memungkinkan dua program berkomunikasi melalui jaringan (LAN/WiFi/Internet).
2.2 TCP (Transmission Control Protocol)
- Connection-oriented (membangun koneksi dulu)
- Reliable (ada ACK, retransmit)
- Urutan data terjaga
- Cocok untuk data penting: sensor, file, login
Format:
Client → Connect → Send → Receive → Close
2.3 UDP (User Datagram Protocol)
- Connectionless (tanpa koneksi)
- Tidak reliable (bisa hilang)
- Lebih cepat, rendah latency
- Cocok untuk streaming, video, data cepat IoT
Format:
Send langsung → Tidak menunggu balasan
🧰 3. Alat & Bahan
- Laptop dengan Python 3.x
- Text Editor (VSCode / Notepad++)
- Dua terminal (untuk server & client)
- Jaringan LAN/WiFi (opsional untuk multi-device)
🛠 4. Praktikum TCP
4.1 Program TCP Server (server_tcp.py)
import socket
HOST = "0.0.0.0"
PORT = 5000
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((HOST, PORT))
server.listen()
print("TCP Server berjalan di port", PORT)
conn, addr = server.accept()
print("Terhubung dengan:", addr)
while True:
data = conn.recv(1024).decode()
if not data:
break
print("Client:", data)
conn.sendall(("Server menerima: " + data).encode())
conn.close()
server.close()
4.2 Program TCP Client (client_tcp.py)
import socket
HOST = "127.0.0.1" # ganti dengan IP server jika beda device
PORT = 5000
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((HOST, PORT))
while True:
msg = input("Ketik pesan: ")
client.sendall(msg.encode())
response = client.recv(1024).decode()
print("Server:", response)
🧪 4.3 Langkah Uji Coba TCP
- Buka terminal 1 → jalankan server
python server_tcp.py
- Buka terminal 2 → jalankan client
python client_tcp.py
- Kirim pesan dari client → lihat response server
- Uji koneksi antar laptop (ubah IP server)
- Analisis:
- Latency
- Apakah pesan selalu sampai?
- Apa beda jika koneksi terputus?
⚡ 5. Praktikum UDP
5.1 Program UDP Server (server_udp.py)
import socket
HOST = "0.0.0.0"
PORT = 6000
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind((HOST, PORT))
print("UDP Server berjalan di port", PORT)
while True:
data, addr = server.recvfrom(1024)
print("Dari", addr, ":", data.decode())
server.sendto(("Server menerima: " + data.decode()).encode(), addr)
5.2 Program UDP Client (client_udp.py)
import socket
HOST = "127.0.0.1" # IP server
PORT = 6000
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
msg = input("Ketik pesan: ")
client.sendto(msg.encode(), (HOST, PORT))
data, _ = client.recvfrom(1024)
print("Server:", data.decode())
🧪 5.3 Langkah Uji Coba UDP
- Jalankan server UDP
- Jalankan client UDP
- Kirim pesan dan perhatikan:
- Tidak ada koneksi (langsung kirim data)
- Latency lebih rendah
- Jika server off → pesan hilang (tidak ada error)
📊 6. Tabel Perbandingan TCP vs UDP
| Parameter | TCP | UDP |
| Koneksi | Ya | Tidak |
| Reliability | Sangat tinggi | Rendah |
| Kecepatan | Lebih lambat | Sangat cepat |
| Cocok untuk | Sensor penting, IoT server | Streaming, broadcast, sensor cepat |
| Urutan data | Terjamin | Tidak terjamin |
| Overhead | Tinggi | Rendah |
📚 7. Tugas Praktikum
- Modifikasi server TCP untuk menerima beberapa client (multi-threaded).
- Buat server UDP yang mengirim data broadcast ke banyak client.
- Bandingkan performa TCP vs UDP untuk mengirim 1000 data sensor.
- Buat grafik latency penggunaan TCP dan UDP.
📝 8. Laporan Praktikum (Format)
- Judul & tujuan
- Dasar teori TCP/UDP
- Kode program
- Hasil uji coba (screenshot)
- Analisis perbedaan TCP vs UDP
- Kesimpulan
- Daftar pustaka








