Читать книгу Создание web-сервера на ESP32 с помощью MicroPython и socket: практическое руководство - Группа авторов - Страница 2

Глава 2. Библиотека socket в MicroPython

Оглавление

2.1. Обзор библиотеки socket и ее возможностей


В предыдущей главе мы познакомились с основными концепциями сетевого программирования и узнали, как ESP32 может быть использован в качестве web-сервера. Теперь давайте более подробно рассмотрим библиотеку socket, которая является фундаментальной частью нашего проекта.


Библиотека socket – это набор функций и классов, позволяющих создавать сетевые соединения обмениваться данными между устройствами. Она является частью стандартной библиотеки Python доступна в MicroPython. Socket позволяет как серверные, так клиентские приложения, что делает ее идеальным инструментом для нашего проекта.


Возможности библиотеки socket


Библиотека socket предоставляет широкий спектр возможностей, включая:


Создание сетевых соединений: Socket позволяет создавать соединения между устройствами по протоколам TCP и UDP.


Обмен данными: Библиотека socket позволяет отправлять и получать данные между устройствами по созданному соединению.


Управление соединением: Socket предоставляет функции для управления соединением, такие как установка таймаутов, проверка соединения и закрытие соединения.


Работа с адресами: Библиотека socket позволяет работать IP-адресами и портами, что необходимо для создания сетевых соединений.


Протоколы TCP и UDP


Библиотека socket поддерживает два основных протокола: TCP (Transmission Control Protocol) и UDP (User Datagram Protocol). Протокол обеспечивает надежную доставку данных, гарантируя, что данные будут доставлены в правильном порядке без потерь. UDP, наоборот, быструю но не гарантирует надежность доставки.


Пример использования библиотеки socket


Давайте рассмотрим простой пример использования библиотеки socket для создания сервера, который принимает соединения и отправляет сообщение клиенту:


```python


import socket


Создаем сокет


sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


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


sock.bind(('192.168.1.100', 8080))


Слушаем входящие соединения


sock.listen(1)


print('Сервер запущен. Ожидание соединений…')


while True:


Принимаем входящее соединение


conn, addr = sock.accept()


print('Соединение установлено с', addr)


Отправляем сообщение клиенту


conn.sendall(b'Hello, client!')


Закрываем соединение


conn.close()


```


Этот пример демонстрирует, как создать сервер, который принимает соединения и отправляет сообщение клиенту. В следующей главе мы рассмотрим, использовать библиотеку socket для создания web-сервера на ESP32.


Вывод


В этой главе мы познакомились с библиотекой socket и ее возможностями. Мы узнали, как создавать сетевые соединения, обмениваться данными управлять соединением. также рассмотрели пример использования библиотеки для создания сервера. следующей продолжим изучать библиотеку применение в создании web-сервера на ESP32.


2.2. Создание сокета и установка соединения


В предыдущей главе мы познакомились с основными понятиями сетевого программирования и узнали, как использовать библиотеку `socket` в MicroPython. Теперь готовы приступить к созданию сокета установке соединения удаленным сервером.


Что такое сокет?


Сокет (socket) – это программный интерфейс, который позволяет двум процессам или приложениям обмениваться данными через сетевое соединение. можно представить как виртуальный канал, по которому данные передаются между двумя точками в сети.


Создание сокета


Чтобы создать сокет, мы используем функцию `socket.socket()` из библиотеки `socket`. Эта функция возвращает объект сокета, который можем использовать для установления соединения с удаленным сервером.


```python


import socket


Создаем сокет


sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


```


В этом примере мы создаем сокет с использованием протокола IPv4 (`AF_INET`) и типа сокета `SOCK_STREAM`, который обеспечивает надежную передачу данных.


Установка соединения


После создания сокета мы можем установить соединение с удаленным сервером помощью метода `connect()`. Этот метод принимает два аргумента: адрес сервера и порт.


```python


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


sock.connect(("www.example.com", 80))


```


В этом примере мы устанавливаем соединение с сервером `www.example.com` на порту 80, который является стандартным портом для HTTP.


Отправка и прием данных


После установления соединения мы можем отправлять и принимать данные с помощью методов `send()` `recv()`. Метод отправляет на сервер, а метод `recv()` принимает от сервера.

Создание web-сервера на ESP32 с помощью MicroPython и socket: практическое руководство

Подняться наверх