XAsyncSockets es una biblioteca Python/MicroPython eficiente de sockets asíncronos administrados.

Muy fácil de integrar y muy ligero con un solo archivo:
Características de XAsyncSockets:
- Sockets asíncronos administrados en un grupo (¡hasta miles!)
- Trabaja directamente con E/S para recibir y enviar muy rápidamente
- Admite una gran cantidad de conexiones TCP simultáneas
- Admite operaciones de procesamiento sincrónico concurrente si es necesario (roscado)
- Implementación de servidores TCP.
- Implementación de clientes TCP.
- Implementación de datagramas UDP (remitente y/o receptor)
- El cliente TCP puede ocurrir después de recibir un tamaño específico de datos o una línea de texto
- Cada conexión y recepción puede esperar durante un tiempo específico.
- Se devuelven los motivos del cierre de clientes TCP.
- Realmente robusto, muy rápido y fácil de usar.
- Compatible con la implementación de MicroPython (capa de sockets, cola FiFo, contador de rendimiento)

Clases XAsyncSockets :
| nombre de clase | Descripción |
|---|
| XAsyncSocketsPool | Grupo administrado de objetos 'XAsyncSocket' |
| XCerradoMotivo | Enumerador de motivos de cierre de 'XAsyncSocket' |
| XAsyncSocket | Clase abstracta de sockets asíncronos administrados |
| Servidor XAsyncTCPServer | Implementación del servidor TCP de 'XAsyncSocket' |
| Cliente XAsyncTCPC | Implementación del cliente TCP de 'XAsyncSocket' |
| XAsyncUDPDatagrama | Implementación de remitente/receptor UDP de 'XAsyncSocket' |
| Ranura XBuffer | Búfer administrado |
| XBufferSlots | Colección de buffers administrados |
| XFiFo | Cola FiFo dedicada |
Excepciones de XAsyncSockets :
| nombre de clase | Descripción |
|---|
| Excepción XAsyncSocketsPool | Clase de excepción para 'XAsyncSocketsPool' |
| Excepción XAsyncSocket | Clase de excepción para 'XAsyncSocket' |
| Excepción XAsyncTCPServerException | Clase de excepción para 'XAsyncTCPServer' |
| Excepción XAsyncTCPClientException | Clase de excepción para 'XAsyncTCPClient' |
| Excepción XAsyncUDPDatagram | Clase de excepción para 'XAsyncUDPDatagram' |
| Excepción XFiFo | Clase de excepción para 'XFiFo' |
Detalles de la clase XAsyncSocketsPool :
| Método | Argumentos |
|---|
| Constructor | Ninguno |
| ObtenerTodosAsyncSockets | Ninguno |
| ObtenerAsyncSocketByID | id (int) |
| Eventos AsyncWait | threadsCount=0 (int) |
| DetenerEsperarEventos | Ninguno |
| Propiedad | Detalles |
|---|
| EsperarEventosProcesamiento | Devuelve True si "WaitEvents" está en proceso |
(No llame directamente a los métodos AddAsyncSocket , RemoveAsyncSocket , NotifyNextReadyForReading y NotifyNextReadyForWriting )
Detalles de la clase XClosedReason :
| variable estática | Valor |
|---|
| Error | 0x00 |
| Cerrado por el anfitrión | 0x01 |
| Cerrado por pares | 0x02 |
| Se acabó el tiempo | 0x03 |
Detalles de la clase XAsyncSocket :
| Método | Argumentos |
|---|
| ObtenerAsyncSocketsPool | Ninguno |
| ObtenerSocketObj | Ninguno |
| Cerca | Ninguno |
| Propiedad | Detalles |
|---|
| ID de enchufe | Obtenga la identificación única del socket abierto |
| EnCerrado | Obtener o establecer un evento de tipo f(closedReason) |
| Estado | Obtener o establecer un objeto personalizado |
Detalles de la clase XAsyncTCPServer :
| Método | Argumentos |
|---|
| Crear (estático) | asyncSocketsPool , srvAddr (tupla de ip y puerto), srvBacklog=256 (int), bufSlots=None |
| Propiedad | Detalles |
|---|
| Dirección Srv | Tupla de ip y puerto |
| OnClientAceptado | Obtener o configurar un evento de tipo f(xAsyncTCPServer, xAsyncTCPClient) |
Detalles de la clase XAsyncTCPClient :
| Método | Argumentos |
|---|
| Crear (estático) | asyncSocketsPool , srvAddr (tupla de ip y puerto), connectTimeout=5 (int), recvBufLen=4096 (int), sendBufLen=4096 (int), connectAsync=True (bool) |
| LíneaRecvAsync | lineEncoding='UTF-8' , onLineRecv=None (función), onLineRecvArg=None (objeto) , timeoutSec=None (int) |
| AsyncRecvData | size=None (int), onDataRecv=None (función), onDataRecvArg=None (objeto), timeoutSec=None (int) |
| Envío asíncrono de datos | data (bytes o protocolo de búfer), onDataSent=None (función), onDataSentArg=None (objeto) |
| AsyncSendSendingBuffer | size=None (int), onDataSent=None (función), onDataSentArg=None (objeto) |
| IniciarSSL | keyfile=None , certfile=None , server_side=False , cert_reqs=ssl.CERT_NONE , ca_certs=None |
| IniciarSSLContext | sslContext , serverSide=False |
-
onLineRecv es un evento de devolución de llamada de tipo f(xAsyncTCPClient, line, arg) -
onDataRecv es un evento de devolución de llamada de tipo f(xAsyncTCPClient, data, arg) -
onDataSent es un evento de devolución de llamada de tipo f(xAsyncTCPClient, arg) -
StartSSL y StartSSLContext no funcionan en MicroPython (en modo de sockets asíncronos sin bloqueo) - Se recomienda ampliamente utilizar
StartSSLContext en lugar de StartSSL (versión anterior)
| Propiedad | Detalles |
|---|
| Dirección Srv | Tupla de ip y puerto |
| CliAddr | Tupla de ip y puerto |
| EsSSL | Devuelve True si se utiliza SSL |
| Búfer de envío | Obtener el búfer existente (memoryview) utilizado para enviar datos |
| Al fallar la conexión | Obtener o configurar un evento de tipo f(xAsyncTCPClient) |
| Conectado | Obtener o configurar un evento de tipo f(xAsyncTCPClient) |
Detalles de la clase XAsyncUDPDatagram :
| Método | Argumentos |
|---|
| Crear (estático) | asyncSocketsPool , localAddr=None (tupla de ip y puerto), recvBufLen=4096 (int), broadcast=False (bool) |
| AsyncSendDatagrama | datagram (bytes o protocolo de buffer), remoteAddr (tupla de ip y puerto), onDataSent=None (función), onDataSentArg=None (objeto) |
- onDataSent es un evento de devolución de llamada de tipo f(xAsyncUDPDatagram, arg)
| Propiedad | Detalles |
|---|
| Dirección local | Tupla de ip y puerto |
| EnRecv | Obtener o configurar un evento de tipo f(xAsyncUDPDatagram, remoteAddr, datagram) |
| Al no poder enviar | Obtener o configurar un evento de tipo f(xAsyncUDPDatagram, datagram, remoteAddr) |
Detalles de la clase XBufferSlot :
| Método | Argumentos |
|---|
| Constructor | size (int), keepAlloc=True (bool) |
| Propiedad | Detalles |
|---|
| Disponible | Obtener o establecer la disponibilidad del espacio |
| Tamaño | Obtenga el tamaño del búfer de la ranura |
| Buffer | Obtener el buffer de la ranura |
Detalles de la clase XBufferSlots :
| Método | Argumentos |
|---|
| Constructor | slotsCount (int), slotsSize (int), keepAlloc=True (bool) |
| Obtener ranura disponible | Ninguno |
| Propiedad | Detalles |
|---|
| Número de ranuras | Obtener el número de espacios |
| Tamaño de las ranuras | Obtenga el tamaño del búfer de cada ranura |
| Tragamonedas | Obtenga la lista de espacios |
Detalles de la clase XFiFo :
| Método | Argumentos |
|---|
| Constructor | Ninguno |
| Poner | obj (objeto) |
| Conseguir | Ninguno |
| Claro | Ninguno |
| Propiedad | Detalles |
|---|
| Vacío | Devuelve True si el FiFo está vacío |
Por JC`zic para HC² ;')
¿Mantenlo simple, estúpido ?