XAsyncSockets — это эффективная библиотека управляемых асинхронных сокетов Python/MicroPython.

Очень легко интегрировать и очень легко использовать только один файл:
Возможности XAsyncSockets:
- Управляемые асинхронные сокеты в пуле (до тысяч!)
- Работает напрямую с вводом-выводом для очень быстрого приема и отправки.
- Поддерживает очень большое количество одновременных TCP-соединений.
- При необходимости поддерживает параллельные синхронные операции обработки (поточные)
- Реализация TCP-серверов
- Реализация TCP-клиентов
- Реализация дейтаграмм UDP (отправитель и/или получатель)
- TCP-клиент может создавать события после получения определенного размера данных или текстовой строки.
- Каждое соединение и прием могут ожидать в течение определенного времени.
- Возвращаются причины закрытия TCP-клиентов.
- Действительно надежный, очень быстрый и простой в использовании
- Совместимость с реализацией MicroPython (уровень сокетов, очередь FiFo, счетчик производительности)

Классы XAsyncSockets :
| Имя класса | Описание |
|---|
| XAsyncSocketsPool | Управляемый пул объектов XAsyncSocket. |
| XClosedReason | Перечислитель причин закрытия XAsyncSocket |
| XAsyncSocket | Абстрактный класс управляемых асинхронных сокетов |
| XAsyncTCPServer | Реализация TCP-сервера «XAsyncSocket» |
| XAsyncTCPClient | TCP-клиентская реализация XAsyncSocket |
| XAsyncUDPдатаграмма | Реализация UDP-отправителя/получателя XAsyncSocket |
| XBufferSlot | Управляемый буфер |
| XBufferSlots | Коллекция управляемых буферов |
| XFiFo | Выделенная очередь FiFo |
Исключения XAsyncSockets :
| Имя класса | Описание |
|---|
| XAsyncSocketsPoolException | Класс исключения для «XAsyncSocketsPool» |
| XAsyncSocketException | Класс исключения для «XAsyncSocket» |
| XAsyncTCPServerException | Класс исключения для «XAsyncTCPServer» |
| XAsyncTCPClientException | Класс исключения для «XAsyncTCPClient» |
| XAsyncUDPDatagramException | Класс исключения для «XAsyncUDPDatagram» |
| XFiFoException | Класс исключения для «XFiFo» |
Подробности класса XAsyncSocketsPool :
| Метод | Аргументы |
|---|
| Конструктор | Никто |
| GetAllAsyncSockets | Никто |
| GetAsyncSocketByID | id (целое) |
| Асинхронное ожидание событий | threadsCount=0 (целое) |
| StopWaitEvents | Никто |
| Свойство | Подробности |
|---|
| Обработка ожидания событий | Возвращайте True , если «WaitEvents» находится в обработке. |
(Не вызывайте напрямую методы AddAsyncSocket , RemoveAsyncSocket , NotifyNextReadyForReading и NotifyNextReadyForWriting )
Детали класса XClosedReason :
| Статическая переменная | Ценить |
|---|
| Ошибка | 0x00 |
| ЗакрытоПоХосту | 0x01 |
| ClosedByPeer | 0x02 |
| Тайм-аут | 0x03 |
Подробности класса XAsyncSocket :
| Метод | Аргументы |
|---|
| GetAsyncSocketsPool | Никто |
| GetSocketObj | Никто |
| Закрывать | Никто |
| Свойство | Подробности |
|---|
| идентификатор сокета | Получить уникальный идентификатор открытого сокета |
| OnClosed | Получить или установить событие типа f(closedReason) |
| Состояние | Получить или установить пользовательский объект |
Подробности класса XAsyncTCPServer :
| Метод | Аргументы |
|---|
| Создать (статический) | asyncSocketsPool , srvAddr (кортеж IP-адреса и порта), srvBacklog=256 (int), bufSlots=None |
| Свойство | Подробности |
|---|
| СрвАддр | Кортеж IP и порта |
| Онклиентакцептед | Получить или установить событие типа f(xAsyncTCPServer, xAsyncTCPClient) |
Подробности класса XAsyncTCPClient :
| Метод | Аргументы |
|---|
| Создать (статический) | asyncSocketsPool , srvAddr (кортеж IP-адреса и порта), connectTimeout=5 (целое), recvBufLen=4096 (целое), sendBufLen=4096 (целое), connectAsync=True (Bool) |
| Асинреквлине | lineEncoding='UTF-8' , onLineRecv=None (функция), onLineRecvArg=None (объект) , timeoutSec=None (int) |
| Асинреквдата | size=None (int), onDataRecv=None (функция), onDataRecvArg=None (объект), timeoutSec=None (int) |
| Асинксенддата | data (байты или протокол буфера), onDataSent=None (функция), onDataSentArg=None (объект) |
| AsyncSendSendingBuffer | size=None (int), onDataSent=None (функция), onDataSentArg=None (объект) |
| СтартSSL | keyfile=None , certfile=None , server_side=False , cert_reqs=ssl.CERT_NONE , ca_certs=None |
| СтартSSLКонтекст | sslContext , serverSide=False |
-
onLineRecv — это событие обратного вызова типа f(xAsyncTCPClient, line, arg) -
onDataRecv — это событие обратного вызова типа f(xAsyncTCPClient, data, arg) -
onDataSent — это событие обратного вызова типа f(xAsyncTCPClient, arg) -
StartSSL и StartSSLContext не работают на MicroPython (в режиме асинхронных неблокирующих сокетов) - Широко рекомендуется использовать
StartSSLContext вместо StartSSL (старая версия).
| Свойство | Подробности |
|---|
| СрвАддр | Кортеж IP и порта |
| Клиаддр | Кортеж IP и порта |
| IsSSL | Верните True если используется SSL |
| Отправкабуфера | Получите существующий буфер (memoryview), используемый для отправки данных. |
| Онфаилстоконнект | Получить или установить событие типа f(xAsyncTCPClient) |
| OnConnected | Получить или установить событие типа f(xAsyncTCPClient) |
Подробности класса XAsyncUDPDatagram :
| Метод | Аргументы |
|---|
| Создать (статический) | asyncSocketsPool , localAddr=None (кортеж IP-адреса и порта), recvBufLen=4096 (int), broadcast=False (bool) |
| Асинксенддатаграмма | datagram (байты или протокол буфера), remoteAddr (кортеж IP и порта), onDataSent=None (функция), onDataSentArg=None (объект) |
- onDataSent — это событие обратного вызова типа f(xAsyncUDPDatagram, arg)
| Свойство | Подробности |
|---|
| ЛокальныйАддр | Кортеж IP и порта |
| OnRecv | Получить или установить событие типа f(xAsyncUDPDatagram, RemoteAddr, Datagram) |
| Онфаилстосенд | Получить или установить событие типа f(xAsyncUDPDatagram, datagram, RemoteAddr) |
Детали класса XBufferSlot :
| Метод | Аргументы |
|---|
| Конструктор | size (int), keepAlloc=True (bool) |
| Свойство | Подробности |
|---|
| Доступный | Получить или установить доступность слота |
| Размер | Получить размер буфера слота |
| Буфер | Получить буфер слота |
Детали класса XBufferSlots :
| Метод | Аргументы |
|---|
| Конструктор | slotsCount (int), slotsSize (int), keepAlloc=True (bool) |
| Получить доступный слот | Никто |
| Свойство | Подробности |
|---|
| СлотыКоличество | Получить количество слотов |
| СлотыРазмер | Получить размер буфера каждого слота |
| Слоты | Получить список слотов |
Детали класса XFiFo :
| Метод | Аргументы |
|---|
| Конструктор | Никто |
| Помещать | obj (объект) |
| Получать | Никто |
| Прозрачный | Никто |
| Свойство | Подробности |
|---|
| Пустой | Верните True если FiFo пуст. |
Автор JC`zic для HC² ;')
Будь проще, глупый ?