1. Сокеты

Сокеты представляют собой интерфейс для взаимодействия между процессами через сеть. В Python модуль socket обеспечивает доступ к интерфейсу сокетов BSD, который доступен на всех современных системах Unix, Windows, MacOS и, возможно, на дополнительных платформах.

Основные функции работы с сокетами:

  1. Создание сокета:

    import socket
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    

    Аргументы:

  2. Привязка сокета:

    s.bind(('localhost', 8080))
    

    Привязывает сокет к адресу и порту.

  3. Прослушивание соединений:

    s.listen(5)
    

    Переход в режим прослушивания входящих соединений.

  4. Принятие соединений:

    conn, addr = s.accept()
    

    Принимает входящее соединение и возвращает новое соединение и адрес клиента.

  5. Подключение к серверу:

    s.connect(('localhost', 8080))
    

    Устанавливает соединение с сервером.

  6. Отправка и получение данных:

    s.sendall(b'Hello, world')
    data = s.recv(1024)
    
  7. Закрытие сокета:

    s.close()
    

Типы сокетов:

Блокирующий и неблокирующий сокеты устанавливаются с помощью метода setblocking() в Python. Для установки блокирующего сокета, вызовите setblocking(True). Для установки неблокирующего сокета, вызовите setblocking(False).

Пример:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Установка блокирующего сокета
s.setblocking(True)

# Установка неблокирующего сокета
s.setblocking(False)

Важно отметить, что при использовании неблокирующего сокета, методы вроде send(), recv(), accept() и connect() будут возвращать ошибку socket.error в случае, если они не могут быть немедленно выполнены.

Сокеты могут работать через различные протоколы, такие как TCP и UDP, каждый из которых имеет свои особенности в плане надежности, скорости и способов передачи данных.

2. Http.server

http.server — это модуль Python, который позволяет создавать простой HTTP-сервер для разработки и тестирования. Он поддерживает HTTP/1.0 и HTTP/1.1 и предоставляет базовые возможности для страниц.