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² 撰写;')
保持简单吗,傻瓜?