XAsyncSockets 是一个高效的 Python/MicroPython 托管异步套接字库。

非常容易集成,并且非常轻量,仅包含一个文件:
XAsyncSockets 功能:
- 池中的托管异步套接字(最多数千个!)
- 直接与 I/O 配合使用,可以非常快速地接收和发送
- 支持大量并发 TCP 连接
- 必要时支持并发同步处理操作(线程)
- TCP服务器的实现
- TCP客户端的实现
- UDP 数据报的实现(发送方和/或接收方)
- TCP 客户端可以在收到指定大小的数据或文本行后发生事件
- 每个连接和接收都可以在指定时间内等待
- 返回TCP客户端关闭原因
- 非常强大、非常快速且易于使用
- 与 MicroPython 实现兼容(套接字层、FiFo 队列、性能计数器)

XAsyncSockets类:
| 班级名称 | 描述 |
|---|
| XAsyncSocketsPool | “XAsyncSocket”对象的托管池 |
| X关闭原因 | “XAsyncSocket”关闭原因的枚举器 |
| XAsyncSocket | 托管异步套接字的抽象类 |
| XAsyncTCP服务器 | “XAsyncSocket”的 TCP 服务器实现 |
| XAsyncTCP客户端 | “XAsyncSocket”的 TCP 客户端实现 |
| XAsyncUDP数据报 | “XAsyncSocket”的 UDP 发送器/接收器实现 |
| XBufferSlot | 托管缓冲区 |
| XBufferSlots | 托管缓冲区集合 |
| XFiFo | 专用 FiFo 队列 |
XAsyncSockets异常:
| 班级名称 | 描述 |
|---|
| XAsyncSocketsPoolException | “XAsyncSocketsPool”的异常类 |
| XAsyncSocketException | “XAsyncSocket”的异常类 |
| XAsyncTCPServerException | “XAsyncTCPServer”的异常类 |
| XAsyncTCPClientException | “XAsyncTCPClient”的异常类 |
| XAsyncUDPDatagramException | “XAsyncUDPDatagram”的异常类 |
| XFiFo异常 | “XFiFo”的异常类 |
XAsyncSocketsPool类详细信息:
| 方法 | 论点 |
|---|
| 构造函数 | 没有任何 |
| 获取所有AsyncSockets | 没有任何 |
| 获取AsyncSocketByID | id (整数) |
| 异步等待事件 | threadsCount=0 (整数) |
| 停止等待事件 | 没有任何 |
| 财产 | 细节 |
|---|
| 等待事件处理 | 如果“WaitEvents”正在处理中,则返回True |
(不要直接调用方法AddAsyncSocket 、 RemoveAsyncSocket 、 NotifyNextReadyForReading和NotifyNextReadyForWriting )
XClosedReason类详细信息:
| 静态变量 | 价值 |
|---|
| 错误 | 0x00 |
| 由主机关闭 | 0x01 |
| 对等关闭 | 0x02 |
| 暂停 | 0x03 |
XAsyncSocket类详细信息:
| 方法 | 论点 |
|---|
| 获取AsyncSocketsPool | 没有任何 |
| 获取套接字对象 | 没有任何 |
| 关闭 | 没有任何 |
| 财产 | 细节 |
|---|
| 套接字ID | 获取打开的套接字唯一ID |
| 关闭时 | 获取或设置 f(closeReason) 类型的事件 |
| 状态 | 获取或设置自定义对象 |
XAsyncTCPServer类详细信息:
| 方法 | 论点 |
|---|
| 创建(静态) | asyncSocketsPool 、 srvAddr (ip 和端口的元组)、 srvBacklog=256 (int)、 bufSlots=None |
| 财产 | 细节 |
|---|
| 服务地址 | ip 和端口的元组 |
| 客户端接受时 | 获取或设置类型为 f(xAsyncTCPServer, xAsyncTCPClient) 的事件 |
XAsyncTCPClient类详细信息:
| 方法 | 论点 |
|---|
| 创建(静态) | asyncSocketsPool 、 srvAddr (ip 和端口的元组)、 connectTimeout=5 (int)、 recvBufLen=4096 (int)、 sendBufLen=4096 (int)、 connectAsync=True (bool) |
| 异步接收线 | lineEncoding='UTF-8' 、 onLineRecv=None (函数)、 onLineRecvArg=None (对象) , timeoutSec=None (整数) |
| 异步接收数据 | size=None (int)、 onDataRecv=None (函数)、 onDataRecvArg=None (对象)、 timeoutSec=None (int) |
| 异步发送数据 | data (字节或缓冲区协议)、 onDataSent=None (函数)、 onDataSentArg=None (对象) |
| 异步发送发送缓冲区 | 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 和端口的元组 |
| 安全套接层 | 如果使用 SSL,则返回True |
| 发送缓冲区 | 获取用于发送数据的现有缓冲区(memoryview) |
| 连接失败时 | 获取或设置类型为 f(xAsyncTCPClient) 的事件 |
| 已连接 | 获取或设置类型为 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 和端口的元组 |
| 接收时 | 获取或设置类型为 f(xAsyncUDPDatagram, remoteAddr, datagram) 的事件 |
| 发送失败时 | 获取或设置类型为 f(xAsyncUDPDatagram, datagram, remoteAddr) 的事件 |
XBufferSlot类详细信息:
| 方法 | 论点 |
|---|
| 构造函数 | size (int), keepAlloc=True (布尔) |
| 财产 | 细节 |
|---|
| 可用的 | 获取或设置插槽的可用性 |
| 尺寸 | 获取槽的缓冲区大小 |
| 缓冲 | 获取槽位的缓冲区 |
XBufferSlots类详细信息:
| 方法 | 论点 |
|---|
| 构造函数 | slotsCount (int)、 slotsSize (int)、 keepAlloc=True (bool) |
| 获取可用槽位 | 没有任何 |
| 财产 | 细节 |
|---|
| 插槽数 | 获取插槽数量 |
| 槽位尺寸 | 获取每个槽的缓冲区大小 |
| 老虎机 | 获取槽位列表 |
XFiFo类详细信息:
| 方法 | 论点 |
|---|
| 构造函数 | 没有任何 |
| 放 | obj (对象) |
| 得到 | 没有任何 |
| 清除 | 没有任何 |
作者:JC`zic 为 HC² 撰写;')
保持简单吗,傻瓜?