Các gói dữ liệu di chuyển giữa client và server sử dụng Giao thức Datagram Người dùng (UDP). Hai điểm cuối giao tiếp cần địa chỉ IP và số cổng để thiết lập liên lạc. Một điểm cuối được gọi là người gửi (sender) và điểm kia là người nhận (receiver). Trong giao thức này, người gửi không theo dõi các gói tin đã gửi và tùy thuộc vào người nhận chấp nhận hoặc không chấp nhận tất cả các gói tin.
Chương trình Sender (Người gửi)
Chương trình Python dưới đây sử dụng module socket để tạo chương trình của người gửi. Chúng ta khai báo biến cho địa chỉ IP và Cổng. Sau đó thêm tin nhắn vào đó. Hàm sendto() được dùng để kết hợp tin nhắn với địa chỉ IP và số cổng.
Ví dụ
import socket
UDP_IP = "localhost"
UDP_PORT = 5050
MESSAGE = "Hello UDP! "
print("Sent Message: ", MESSAGE)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(bytes(MESSAGE, "utf-8"), (UDP_IP, UDP_PORT))
Kết quả
Chạy mã trên cho kết quả sau:
Sent Message: Hello UDP!
Chương trình Receiver (Người nhận)
Tương tự, chúng ta tạo chương trình người nhận sẽ nhận tin nhắn được gửi bởi chương trình người gửi. Kích thước tin nhắn trong chương trình dưới bị giới hạn ở 1024 byte. Hàm bind() gắn IP và cổng với dữ liệu được nhận.
Ví dụ
import socket
UDP_IP = "localhost"
UDP_PORT = 5050
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((UDP_IP, UDP_PORT))
while True:
# kích thước buffer là 1024 bytes
data, addr = s.recvfrom(1024)
print("Received message:", data)
Kết quả
Chạy mã trên cho kết quả sau:
Received message: Hello UDP!