Definisi dan Mekanisme Socket
Socket programming adalah metode komunikasi antar proses (Inter-Process Communication/IPC) yang memungkinkan dua program untuk saling bertukar data, baik dalam satu mesin yang sama maupun melalui jaringan komputer. Dalam arsitektur ini, satu program bertindak sebagai Server (menunggu koneksi) dan program lainnya sebagai Client (memulai koneksi).
Komponen Utama Socket
Untuk membangun koneksi socket, sistem memerlukan kombinasi alamat IP dan nomor port. Berikut adalah tabel komponen dasar yang harus dipahami sebelum memulai implementasi:
| Komponen | Fungsi |
|---|---|
| IP Address | Identitas unik perangkat dalam jaringan. |
| Port | Titik akhir komunikasi (endpoint) untuk aplikasi spesifik. |
| Protocol | Aturan komunikasi (TCP untuk reliabilitas, UDP untuk kecepatan). |
| Socket Descriptor | ID unik yang merepresentasikan koneksi yang sedang aktif. |
Alur Kerja Socket (TCP)
Proses komunikasi TCP mengikuti urutan langkah yang ketat agar data dapat terkirim dengan utuh. Berikut adalah urutan teknis yang terjadi di balik layar:
- Server: Melakukan
socket()untuk membuat endpoint,bind()untuk mengikat port,listen()untuk menunggu koneksi, danaccept()untuk menerima permintaan. - Client: Melakukan
socket()danconnect()ke alamat IP serta port server. - Data Transfer: Kedua pihak menggunakan
send()danrecv()untuk bertukar informasi. - Termination: Setelah selesai, kedua pihak memanggil
close()untuk memutus koneksi secara elegan.
Contoh Implementasi Dasar (Python)
Berikut adalah contoh sederhana implementasi server yang menunggu pesan dari client menggunakan pustaka socket bawaan Python:
import socket
# Inisialisasi socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 65432))
server_socket.listen()
print("Menunggu koneksi...")
conn, addr = server_socket.accept()
print(f"Terhubung dengan {addr}")
data = conn.recv(1024)
print(f"Pesan diterima: {data.decode()}")
conn.close()Troubleshooting Umum
Dalam pengembangan socket, sering terjadi kendala teknis yang umum ditemukan di lapangan:
- Address Already in Use: Terjadi karena port masih dalam status
TIME_WAIT. Gunakan opsiSO_REUSEADDRpada socket server. - Connection Refused: Server belum berjalan atau port yang dituju salah.
- Timeout: Koneksi terputus di tengah jalan atau firewall memblokir port yang digunakan.