Socket #
Sockets adalah antarmuka yang memungkinkan komunikasi antara dua titik akhir, biasanya antara server dan klien, baik dalam jaringan lokal maupun internet. Sockets digunakan untuk mengirim dan menerima data melalui jaringan menggunakan berbagai protokol, seperti TCP (Transmission Control Protocol) dan UDP (User Datagram Protocol).
Socket di Python #
Python menyediakan modul socket
yang memungkinkan Anda untuk bekerja dengan sockets. Berikut adalah komponen utama yang perlu Anda pahami:
- Socket Creation: Membuat objek socket.
- Binding: Mengikat socket ke alamat IP dan nomor port tertentu.
- Listening: Mendengarkan koneksi masuk (untuk server).
- Accepting: Menerima koneksi yang masuk (untuk server).
- Connecting: Menghubungkan ke server (untuk klien).
- Sending/Receiving: Mengirim dan menerima data melalui socket.
TCP Socket #
Server #
import socket
def start_server(host, port):
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((host, port))
server_socket.listen(5)
print(f"Server listening on {host}:{port}")
while True:
client_socket, client_address = server_socket.accept()
print(f"Connection from {client_address}")
handle_client(client_socket)
def handle_client(client_socket):
with client_socket:
while True:
data = client_socket.recv(1024)
if not data:
break
print(f"Received: {data.decode()}")
client_socket.sendall(data)
if __name__ == "__main__":
start_server("127.0.0.1", 65432)
Klien #
import socket
def start_client(host, port):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((host, port))
print(f"Connected to {host}:{port}")
try:
while True:
message = input("Enter message: ")
if message.lower() == 'exit':
break
client_socket.sendall(message.encode())
data = client_socket.recv(1024)
print(f"Received: {data.decode()}")
finally:
client_socket.close()
if __name__ == "__main__":
start_client("127.0.0.1", 65432)
Detail #
-
Socket Creation:
socket.AF_INET
menunjukkan penggunaan alamat IPv4.socket.SOCK_STREAM
menunjukkan penggunaan protokol TCP.
-
Binding (Server):
bind((host, port))
mengikat socket ke alamat IP dan nomor port tertentu.
-
Listening (Server):
listen(5)
membuat server mendengarkan koneksi masuk. Parameter5
menunjukkan jumlah maksimum koneksi yang dapat diantre.
-
Accepting (Server):
accept()
menerima koneksi masuk dan mengembalikan socket baru dan alamat klien.
-
Connecting (Client):
connect((host, port))
menghubungkan klien ke server.
-
Sending/Receiving:
sendall(data)
mengirim data ke socket. Pada server, data diterima melaluirecv(1024)
yang menerima data hingga 1024 byte.
UDP Socket #
Server #
import socket
def start_server(host, port):
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind((host, port))
print(f"Server listening on {host}:{port}")
while True:
data, client_address = server_socket.recvfrom(1024)
print(f"Received {data.decode()} from {client_address}")
server_socket.sendto(data, client_address)
if __name__ == "__main__":
start_server("127.0.0.1", 65432)
Klien #
import socket
def start_client(host, port):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = (host, port)
try:
while True:
message = input("Enter message: ")
if message.lower() == 'exit':
break
client_socket.sendto(message.encode(), server_address)
data, _ = client_socket.recvfrom(1024)
print(f"Received: {data.decode()}")
finally:
client_socket.close()
if __name__ == "__main__":
start_client("127.0.0.1", 65432)
Detail #
-
Socket Creation:
socket.AF_INET
menunjukkan penggunaan alamat IPv4.socket.SOCK_DGRAM
menunjukkan penggunaan protokol UDP.
-
Binding (Server):
bind((host, port))
mengikat socket ke alamat IP dan nomor port tertentu.
-
Receiving Data (Server):
recvfrom(1024)
menerima data hingga 1024 byte dan mengembalikan data serta alamat pengirim.
-
Sending Data (Client):
sendto(data, address)
mengirim data ke alamat tertentu.
Kesimpulan #
Sockets memungkinkan komunikasi antara dua titik akhir jaringan dan digunakan dalam banyak aplikasi jaringan seperti web server, klien email, aplikasi chatting, dan banyak lagi. Dengan memahami cara kerja sockets dan cara mengimplementasikannya di Python, Anda dapat membangun aplikasi jaringan yang efisien dan andal.