Thực thi UDP server và client
UDP server
Tạo một file tên “udp_server.py” và thêm code sau:
import socket
# Create a socket
server_socket = socket.socket(socket.AF_INET,
socket.SOCK_DGRAM)
# Bind the socket to an IP address and port
address = (‘127.0.0.1’, 12345)
server_socket.bind(address)
print(“Server listening on”, address)
while True:
# Receive data from the client
data, client_address = server_socket.recvfrom(1024)
print(f”Received data: {data.decode()} from
{client_address}”)
# Send a response back to the client
response = “Hello, Client!”
server_socket.sendto(response.encode(), client_address)
UDP client
Tạo một file tên “udp_client.py” và thêm code sau:
import socket
# Create a socket
client_socket = socket.socket(socket.AF_INET,
socket.SOCK_DGRAM)
# Send data to the server
data = “Hello, Server!”
server_address = (‘127.0.0.1’, 12345)
client_socket.sendto(data.encode(), server_address)
# Receive data from the server
response, server_address = client_socket.recvfrom(1024)
print(f”Received data: {response.decode()} from
{server_address}”)
Close the client socket
client_socket.close()
Chạy UDP server và client
Để chạy UDP server và client, theo các bước sau:
Mở hai terminal windows.
Trong terminal đầu tiên, điều hướng tới thư mục chứa “udp_server.py” và chạy lệnh sau:
python udp_server.py
Máy chủ sẽ bắt đầu lắng nghe cho các datagrams đi đến.
Trong termial thứ hai, điều hướng tới thư mục chứa “udp_client.py” và chạy lệnh sau:
python udp_client.pyb
Máy khách sẽ gửi một thông điệp tới máy chủ và nhận một trả lời, in ra dữ liệu được nhận.
Quan sát đầu ra ở cả 2 terminals. Máy chủ sẽ hiển thị thông điệp được nhận và địa chỉ máy khách,
trong khi máy khách sẽ hiển thị trả lời được nhận và địa chỉ máy chủ.
Viết một UDP socket trong Python ít phức tạp hơn viết một TCP socket trong Python vì thực tế
rằng nó không cần tạo một kết nối giữa máy chủ và máy khách. Bạn có thể xây dựng các chương trình
server và client cái tận dụng tốc độ và đơn giản hoá được cung cấp bởi giao thức UDP bằng cách
sử dụng các sockets phi kết nối để trao đổi thông tin với nhau qua các phương thức’sendto()’ và
recvfrom()’.