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² 撰寫;')
保持簡單嗎,傻瓜?