Error pada koneksi TCP client-server di Python umumnya disebabkan oleh masalah jaringan, port yang masih terikat (port binding), atau server yang belum aktif saat client mencoba melakukan koneksi. Permasalahan paling sering muncul meliputi ConnectionRefusedError (Errno 111), TimeoutError, dan OSError: [Errno 98] Address already in use.
Tabel Diagnostik Error TCP Socket Python
| Jenis Error | Penyebab Utama | Solusi Cepat |
|---|---|---|
ConnectionRefusedError |
Server belum dijalankan atau port/IP tujuan salah. | Jalankan script server terlebih dahulu; pastikan IP dan port sesuai. |
OSError: [Errno 98] Address already in use |
Port masih digunakan oleh proses Python sebelumnya yang belum tertutup. | Gunakan setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) atau matikan proses lama. |
TimeoutError / socket.timeout |
Jaringan lambat, terhalang firewall, atau server tidak merespons tepat waktu. | Tingkatkan batas waktu (timeout) atau periksa aturan firewall/NAT. |
Contoh Implementasi Kode TCP Server yang Aman
Berikut adalah contoh kode server yang menerapkan opsi SO_REUSEADDR untuk mencegah error port bentrok:
import socket
def run_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Mencegah error 'Address already in use'
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
host = '127.0.0.1'
port = 65432
server_socket.bind((host, port))
server_socket.listen()
print(f"Server mendengarkan pada {host}:{port}...")
conn, addr = server_socket.accept()
with conn:
print(f"Terhubung dengan {addr}")
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data)
if __name__ == '__main__':
run_server()
Contoh Implementasi Kode TCP Client dengan Penanganan Error
Client harus dibungkus dengan blok try-except untuk menangkap kegagalan koneksi secara elegan tanpa membuat program crash:
import socket
def run_client():
host = '127.0.0.1'
port = 65432
try:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((host, port))
message = "Halo Server!"
client_socket.sendall(message.encode('utf-8'))
data = client_socket.recv(1024)
print(f"Menerima dari server: {data.decode('utf-8')}")
except ConnectionRefusedError:
print("Gagal terhubung: Server tidak aktif atau menolak koneksi.")
except socket.timeout:
print("Koneksi waktu habis (timeout).")
except Exception as e:
print(f"Terjadi kesalahan tak terduga: {e}")
finally:
client_socket.close()
if __name__ == '__main__':
run_client()
Langkah-Langkah Troubleshooting Lapangan
- Urutan Eksekusi: Selalu jalankan file
server.pyterlebih dahulu sebelum menjalankanclient.py. Jika client dijalankan duluan,ConnectionRefusedErrorpasti akan muncul. - Periksa Port yang Menggantung: Jika Anda mendapatkan error
Address already in use, cari proses Python yang berjalan di background menggunakan perintah terminalnetstat -ano | findstr 65432(Windows) ataulsof -i :65432(Linux/Mac), lalu hentikan proses tersebut. - Pengujian Firewall: Jika menghubungkan client dan server di perangkat berbeda dalam satu jaringan lokal (LAN), pastikan Windows Defender atau firewall aktif tidak memblokir port yang digunakan.
🔍 Orang Lain Juga Mencari Ini
Python Socket Connection Refused Error
Python Socket Address Already In Use Fix
Python Tcp Client Server Example
Socket Error 10061 Python
Python Socket Timeout Error Handling
Python Network Programming Tutorial
Socket Bind Error Python
Python Tcp Server Multiple Clients
Python Socket Close Connection
So_reuseaddr Python Socket
Python Http Connection Refused
Debugging Python Socket Scripts
Python Socket Recv Blocked
Python Network Error Handling Best Practices
Tcp Socket Programming In Python