Python - Pemrograman Socket
Halo sana, para ahli Python masa depan! Hari ini, kita akan mendalaminya dunia yang menarik pemrograman socket. Jangan khawatir jika Anda baru saja memulai; kita akan mulai dari dasar-dasar dan kemudian naik tingkatannya. Pada akhir tutorial ini, Anda akan dapat membuat aplikasi jaringan Anda sendiri seperti seorang ahli!
Apa Itu Socket?
Bayangkan Anda mencoba berbicara kepada seorang teman yang tinggal jauh. Anda perlu mencari cara untuk mengirim pesan Anda dan menerima balasannya. Dalam dunia komputer, socket memainkan peran ini. Mereka seperti jalur telepon yang memungkinkan komputer untuk berkomunikasi satu sama lain melalui jaringan.
Socket adalah titik akhir dari hubungan dua arah antara dua program yang berjalan di jaringan. Itu adalah cara Anda mengirim pesan antara klien (seperti browser web Anda) dan server (seperti sebuah website).
Modul Socket Python
Python membuat pemrograman socket menjadi mudah dengan modul built-in socket
. mari kita mulai dengan mengimpor itu:
import socket
Baris sederhana ini memberikan kita akses ke semua fungsionalitas socket yang kita butuhkan. Itu seperti membuka kotak peralatan kami sebelum kita mulai membangun!
Metode Socket Server
Ketika kita membuat server, kita perlu menggunakan metode tertentu untuk mengatur nya. Berikut adalah tabel metode server socket yang paling umum:
Metode | Deskripsi |
---|---|
socket() |
Membuat socket baru |
bind() |
Mengikat socket ke alamat dan port tertentu |
listen() |
Menempatkan server dalam mode mendengarkan |
accept() |
Menerima koneksi dari klien |
Mari kita lihat ini dalam tindakan dengan contoh sederhana:
import socket
# Membuat objek socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Mengikat socket ke alamat tertentu dan port
server_socket.bind(('localhost', 12345))
# Mendengarkan koneksi masuk
server_socket.listen(1)
print("Server sedang mendengarkan...")
# Menerima koneksi
client_socket, address = server_socket.accept()
print(f"Koneksi dari {address} telah diatur!")
# Menutup koneksi
client_socket.close()
Dalam contoh ini, kita membuat socket, mengikatnya ke 'localhost' di port 12345, mulai mendengarkan, dan kemudian menunggu klien untuk terhubung. Ketika koneksi terbentuk, kita mencetak pesan dan kemudian menutup koneksi.
Metode Socket Klien
Sekarang, mari kita lihat sisi klien. Berikut adalah metode utama yang kita gunakan saat membuat klien:
Metode | Deskripsi |
---|---|
socket() |
Membuat socket baru |
connect() |
Menghubungkan ke socket remote di alamat tertentu |
send() |
Mengirim data ke socket yang terhubung |
recv() |
Menerima data dari socket yang terhubung |
Berikut adalah contoh klien sederhana:
import socket
# Membuat objek socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Menghubungkan ke server
client_socket.connect(('localhost', 12345))
print("Terhubung ke server!")
# Menutup koneksi
client_socket.close()
Klien ini membuat socket, menghubungkannya ke server (yang seharusnya berjalan), dan kemudian menutup koneksi.
Python - Socket Server
Mari kita luaskan contoh server kita untuk melakukan sesuatu yang berguna:
import socket
def start_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen(1)
print("Server sedang mendengarkan...")
while True:
client_socket, address = server_socket.accept()
print(f"Koneksi dari {address} telah diatur!")
message = "Selamat datang di server!"
client_socket.send(message.encode())
client_socket.close()
start_server()
Server ini akan terus berjalan, menerima koneksi, mengirim pesan selamat datang, dan kemudian menutup koneksi.
Python - Socket Klien
Sekarang mari kita buat klien yang dapat menerima pesan dari server:
import socket
def start_client():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))
message = client_socket.recv(1024).decode()
print(f"Pesan dari server: {message}")
client_socket.close()
start_client()
Klien ini menghubungkan ke server, menerima pesan, mencetaknya, dan kemudian menutup koneksi.
Transfer File Python dengan Modul Socket
Salah satu aplikasi praktis pemrograman socket adalah transfer file. Berikut adalah contoh sederhana bagaimana mengirim file dari klien ke server:
Server:
import socket
def receive_file():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen(1)
print("Server menunggu file...")
client_socket, address = server_socket.accept()
print(f"Koneksi dari {address} telah diatur!")
with open('received_file.txt', 'wb') as file:
while True:
data = client_socket.recv(1024)
if not data:
break
file.write(data)
print("File telah diterima secara sukses!")
client_socket.close()
receive_file()
Klien:
import socket
def send_file():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 12345))
with open('file_to_send.txt', 'rb') as file:
data = file.read(1024)
while data:
client_socket.send(data)
data = file.read(1024)
print("File telah dikirim secara sukses!")
client_socket.close()
send_file()
Contoh ini menunjukkan bagaimana mengirim file dari klien ke server menggunakan sockets.
Modul socketserver Python
Untuk aplikasi server yang lebih kompleks, Python menyediakan modul socketserver
. Modul ini menyederhanakan proses menulis server jaringan. Berikut adalah contoh sederhana:
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(1024).strip()
print(f"Diterima: {self.data.decode()}")
self.request.sendall("Pesan diterima".encode())
if __name__ == "__main__":
HOST, PORT = "localhost", 9999
with socketserver.TCPServer((HOST, PORT), MyTCPHandler) as server:
print("Server sedang berjalan...")
server.serve_forever()
Server ini menggunakan modul socketserver
untuk membuat server TCP yang mencerminkan kembali setiap pesan yang diterima.
Dan itu adalah yang Anda semua perlukan, teman-teman! Kita telah melihat dasar-dasar pemrograman socket di Python, dari membuat klien dan server sederhana hingga transfer file dan menggunakan modul socketserver
. Ingat, latihan membuatah, jadi jangan khawatir untuk mencoba konsep ini. Selamat coding!
Credits: Image by storyset