Lập trình socket TCP
Bây giờ để chúng ta học và thực hành thiết lập các kết nối TCP, gửi và nhận dữ liệu trên
TCP, và chấm dứt kết nối TCP sử dụng thư viện socket của Python.
Thiết lập một kết nối TCP
Để thiết lập một kết nối TCP, server phải trước tiên tạo một socket, gắn nó với địa chỉ
IP và cổng, và sau đó bắt đầu lắng nghe cho các kết nối máy khách đi đến. Các bước sau minh
hoạ làm cách nào giành cái này:
Tạo một socket:
import socket
server_socket = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)
Gắn socket vào một địa chỉ IP và cổng:
address = (‘127.0.0.1’, 12345)
server_socket.bind(address)
Lắng nghe các kết nối đi đến:
server_socket.listen(5) # The argument (5) is the
maximum number of queued connections.
Chấp nhận một kết nối đi đến:
client_socket, client_address = server_socket.accept()
print(f”Connection established with {client_address}”)
Trên phía máy khách, bạn cần tạo một socket và kết nối địa chỉ IP và cổng của máy chủ.
Tạo một socket:
import socket
client_socket = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)
Kết nối tới máy chủ:
server_address = (‘127.0.0.1’, 12345)
client_socket.connect(server_address)
Gửi và nhận dữ liệu trên TCP
Một khi kết nối đã được thiết lập, bạn có thể sử dụng các phương thức send() và recv() để truyền và
nhận dữ liệu trên TCP.
Gửi dữ liệu
Để gửi dữ liệu, bạn có thể sử dụng phương thức send() của socket object. Phương thức này lấy một đối
số đơn, dữ liệu sẽ truyền, cái phải là một object như bytes.
Ví dụ (phía máy khách)
data = “Hello, Server!”
client_socket.send(data.encode()) # Convert the string to
bytes and send it.
Nhận dữ liệu
Để nhận dữ liệu, bạn có thể sử dụng phương thức recv() của socket object. Phương thức này lấy một đối số
đơn, lượng tối đa của dữ liệu (bằng bytes) để nhận, và trả về dữ liệu được nhận như một object như bytes.
Ví dụ (phía máy chủ):
data = server_socket.recv(1024) # Receive up to 1024
bytes of data.
print(f”Received data: {data.decode()}”) # Convert the
bytes to a string and print it.
Chấm dứt một kết nối TCP
Để đóng một kêt nối TCP, cả máy chủ và máy khách nên đóng các sockets tương ứng của chúng sử dụng phương thức
close().
Phía máy chủ:
client_socket.close()
server_socket.close()
Phía máy khách:
client_socket.close()
Trong từ ngữ đơn giản nhất, để thực thi lập trình socket TCP trong Python, bạn trước tiên sẽ cần xây dựng và gắn
một socket, sau đó thiết lập một kết nối, sau đó gửi và nhận dữ liệu, và cuối cùng đóng kết nối.