Читать книгу Создание 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()` принимает от сервера.