Giới thiệu về Lập trình mạng Python

Lập trình mạng liên quan đến việc viết phần mềm giao tiếp qua mạng. Python, với bộ thư viện phong phú, giúp phát triển các ứng dụng mạng tương đối đơn giản. Bài viết này giới thiệu về lập trình mạng Python, bao gồm các khái niệm cơ bản và cung cấp các ví dụ để bạn bắt đầu.

Thiết lập môi trường

Trước khi bắt đầu lập trình mạng, hãy đảm bảo bạn đã cài đặt Python. Bạn cũng sẽ cần thư viện `socket`, có trong thư viện chuẩn của Python, do đó không cần cài đặt thêm.

Hiểu về Socket

Socket là điểm cuối để gửi hoặc nhận dữ liệu qua mạng. Thư viện `socket` của Python cung cấp giao diện cho giao tiếp mạng bằng socket.

Tạo một máy chủ TCP đơn giản

Sau đây là ví dụ về máy chủ TCP cơ bản lắng nghe các kết nối đến và xử lý chúng:

import socket

def start_server(host='localhost', port=12345):
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind((host, port))
    server_socket.listen(1)
    print(f'Server listening on {host}:{port}')

    while True:
        client_socket, address = server_socket.accept()
        print(f'Connection from {address}')
        client_socket.sendall(b'Hello, client!')
        client_socket.close()

if __name__ == "__main__":
    start_server()

Tạo một máy khách TCP đơn giản

Sau đây là ví dụ về máy khách kết nối với máy chủ và nhận được tin nhắn:

import socket

def connect_to_server(host='localhost', port=12345):
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect((host, port))
    message = client_socket.recv(1024)
    print('Received:', message.decode())
    client_socket.close()

if __name__ == "__main__":
    connect_to_server()

Hiểu về UDP

UDP (User Datagram Protocol) là một giao thức khác được sử dụng cho giao tiếp mạng. Không giống như TCP, UDP không đảm bảo việc phân phối, sắp xếp hoặc kiểm tra lỗi. Sau đây là một ví dụ cơ bản về giao tiếp UDP:

Máy chủ UDP

import socket

def start_udp_server(host='localhost', port=12345):
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    server_socket.bind((host, port))
    print(f'UDP server listening on {host}:{port}')

    while True:
        message, address = server_socket.recvfrom(1024)
        print(f'Received message from {address}: {message.decode()}')
        server_socket.sendto(b'Hello, UDP client!', address)

if __name__ == "__main__":
    start_udp_server()

Máy khách UDP

import socket

def send_udp_message(host='localhost', port=12345):
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    client_socket.sendto(b'Hello, UDP server!', (host, port))
    message, _ = client_socket.recvfrom(1024)
    print('Received:', message.decode())
    client_socket.close()

if __name__ == "__main__":
    send_udp_message()

Phần kết luận

Thư viện `socket` của Python cung cấp nền tảng vững chắc cho lập trình mạng, cho phép bạn tạo cả ứng dụng TCP và UDP. Bằng cách hiểu các hoạt động và giao thức socket cơ bản, bạn có thể xây dựng nhiều ứng dụng và dịch vụ mạng. Tiếp tục khám phá khả năng mạng của Python để phát triển các giải pháp mạng tinh vi và đáng tin cậy hơn.