Вступ до мережевого програмування Python

Мережеве програмування передбачає написання програмного забезпечення, яке спілкується через мережу. Python з багатим набором бібліотек робить розробку мережевих програм відносно простою. Ця стаття містить введення в мережеве програмування на Python, охоплюючи основні поняття та пропонуючи приклади для початку роботи.

Налаштування середовища

Перш ніж зануритися в мережеве програмування, переконайтеся, що у вас встановлено Python. Вам також знадобиться бібліотека `socket`, яка входить до стандартної бібліотеки Python, тому додаткова інсталяція не потрібна.

Розуміння сокетів

Сокет — це кінцева точка для надсилання або отримання даних через мережу. Бібліотека `socket` Python надає інтерфейс для мережевого зв’язку за допомогою сокетів.

Створення простого сервера TCP

Ось приклад базового сервера TCP, який прослуховує вхідні з’єднання та обробляє їх:

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()

Створення простого клієнта TCP

Ось приклад клієнта, який підключається до сервера та отримує повідомлення:

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()

Розуміння UDP

UDP (протокол дейтаграм користувача) — ще один протокол, який використовується для зв’язку в мережі. На відміну від TCP, UDP не гарантує доставку, замовлення або перевірку помилок. Ось базовий приклад зв’язку UDP:

Сервер 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()

Клієнт 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()

Висновок

Бібліотека `socket` Python забезпечує надійну основу для мережевого програмування, дозволяючи вам створювати програми як TCP, так і UDP. Розуміючи основні операції та протоколи сокетів, ви можете створювати різноманітні мережеві програми та служби. Продовжуйте вивчати мережеві можливості Python, щоб розробити більш складні та надійні мережеві рішення.