XAsyncSockets adalah pustaka Python/MicroPython yang efisien untuk soket asinkron terkelola.
Sangat mudah diintegrasikan dan sangat ringan hanya dengan satu file :
Fitur XAsyncSockets:
- Soket asinkron terkelola dalam satu kumpulan (hingga ribuan!)
- Bekerja langsung dengan I/O untuk menerima dan mengirim dengan sangat cepat
- Mendukung sejumlah besar koneksi TCP simultan
- Mendukung operasi pemrosesan sinkron secara bersamaan jika perlu (berulir)
- Implementasi server TCP
- Implementasi klien TCP
- Implementasi datagram UDP (pengirim dan/atau penerima)
- Klien TCP dapat melakukan event setelah ukuran data atau baris teks tertentu diterima
- Setiap koneksi dan penerimaan dapat menunggu selama waktu tertentu
- Alasan penutupan klien TCP dikembalikan
- Sangat kuat, sangat cepat dan mudah digunakan
- Kompatibel dengan implementasi MicroPython (lapisan soket, antrian FiFo, penghitung kinerja)
Kelas XAsyncSockets :
Nama kelas | Keterangan |
---|
XAsyncSocketsPool | Kumpulan objek 'XAsyncSocket' yang dikelola |
XAlasan Tertutup | Enumerator alasan penutupan 'XAsyncSocket' |
XAsyncSocket | Kelas abstrak dari soket asinkron yang dikelola |
XAsyncTCPServer | Implementasi server TCP dari 'XAsyncSocket' |
Klien XAsyncTCPC | Implementasi klien TCP dari 'XAsyncSocket' |
XAsyncUDPDatagram | Implementasi pengirim/penerima UDP dari 'XAsyncSocket' |
XBufferSlot | Buffer terkelola |
XBufferSlots | Koleksi buffer terkelola |
XFiFo | Antrean FiFo khusus |
Pengecualian XAsyncSockets :
Nama kelas | Keterangan |
---|
XAsyncSocketsPoolException | Kelas pengecualian untuk 'XAsyncSocketsPool' |
XAsyncSocketException | Kelas pengecualian untuk 'XAsyncSocket' |
XAsyncTCPServerException | Kelas pengecualian untuk 'XAsyncTCPServer' |
XAsyncTCPClientException | Kelas pengecualian untuk 'XAsyncTCPClient' |
XAsyncUDPDatagramException | Kelas pengecualian untuk 'XAsyncUDPDatagram' |
XFiFoException | Kelas pengecualian untuk 'XFiFo' |
Detail kelas XAsyncSocketsPool :
Metode | Argumen |
---|
Konstruktor | Tidak ada |
DapatkanSemuaAsyncSockets | Tidak ada |
DapatkanAsyncSocketByID | id (int) |
Acara AsyncWait | threadsCount=0 (int) |
HentikanTungguAcara | Tidak ada |
Milik | Detail |
---|
TungguPemrosesan Acara | Kembalikan True jika "WaitEvents" sedang diproses |
( Jangan langsung memanggil metode AddAsyncSocket
, RemoveAsyncSocket
, NotifyNextReadyForReading
dan NotifyNextReadyForWriting
)
Detail kelas XClosedReason :
Variabel statis | Nilai |
---|
Kesalahan | 0x00 |
Ditutup OlehHost | 0x01 |
Ditutup Oleh Rekan | 0x02 |
Batas waktu | 0x03 |
Detail kelas XAsyncSocket :
Metode | Argumen |
---|
DapatkanAsyncSocketsPool | Tidak ada |
DapatkanSocketObj | Tidak ada |
Menutup | Tidak ada |
Milik | Detail |
---|
IDSoket | Dapatkan ID unik soket yang dibuka |
Sedang Tertutup | Dapatkan atau atur acara bertipe f(closedReason) |
Negara | Dapatkan atau atur objek khusus |
Detail kelas XAsyncTCPServer :
Metode | Argumen |
---|
Buat (statis) | asyncSocketsPool , srvAddr (tuple ip dan port), srvBacklog=256 (int), bufSlots=None |
Milik | Detail |
---|
SrvAddr | Tuple ip dan port |
DiKlien Diterima | Dapatkan atau setel peristiwa bertipe f(xAsyncTCPServer, xAsyncTCPClient) |
Detail kelas XAsyncTCPClient :
Metode | Argumen |
---|
Buat (statis) | asyncSocketsPool , srvAddr (tupel ip dan port), connectTimeout=5 (int), recvBufLen=4096 (int), sendBufLen=4096 (int), connectAsync=True (bool) |
AsyncRecvLine | lineEncoding='UTF-8' , onLineRecv=None (fungsi), onLineRecvArg=None (objek) , timeoutSec=None (int) |
AsyncRecvData | size=None (int), onDataRecv=None (fungsi), onDataRecvArg=None (objek), timeoutSec=None (int) |
AsyncSendData | data (byte atau protokol buffer), onDataSent=None (fungsi), onDataSentArg=None (objek) |
AsyncSendSendingBuffer | size=None (int), onDataSent=None (fungsi), onDataSentArg=None (objek) |
MulaiSSL | keyfile=None , certfile=None , server_side=False , cert_reqs=ssl.CERT_NONE , ca_certs=None |
MulaiSSLContext | sslContext , serverSide=False |
-
onLineRecv
adalah acara panggilan balik bertipe f(xAsyncTCPClient, line, arg) -
onDataRecv
adalah acara panggilan balik bertipe f(xAsyncTCPClient, data, arg) -
onDataSent
adalah acara panggilan balik bertipe f(xAsyncTCPClient, arg) -
StartSSL
dan StartSSLContext
tidak berfungsi di MicroPython (dalam mode soket non-pemblokiran asinkron) - Sangat disarankan untuk menggunakan
StartSSLContext
daripada StartSSL
(versi lama)
Milik | Detail |
---|
SrvAddr | Tuple ip dan port |
CliAddr | Tuple ip dan port |
AdalahSSL | Kembalikan True jika SSL digunakan |
MengirimBuffer | Dapatkan buffer yang ada (memoryview) yang digunakan untuk mengirim data |
OnFailsToConnect | Dapatkan atau atur acara bertipe f(xAsyncTCPClient) |
Sedang Terhubung | Dapatkan atau atur acara bertipe f(xAsyncTCPClient) |
Detail kelas XAsyncUDPDatagram :
Metode | Argumen |
---|
Buat (statis) | asyncSocketsPool , localAddr=None (tuple ip dan port), recvBufLen=4096 (int), broadcast=False (bool) |
AsyncSendDatagram | datagram (byte atau protokol buffer), remoteAddr (tupel ip dan port), onDataSent=None (fungsi), onDataSentArg=None (objek) |
- onDataSent adalah acara panggilan balik bertipe f(xAsyncUDPDatagram, arg)
Milik | Detail |
---|
Addr Lokal | Tuple ip dan port |
PadaRecv | Dapatkan atau atur acara bertipe f(xAsyncUDPDatagram, remoteAddr, datagram) |
OnFailsToSend | Dapatkan atau atur acara bertipe f(xAsyncUDPDatagram, datagram, remoteAddr) |
Detail kelas XBufferSlot :
Metode | Argumen |
---|
Konstruktor | size (int), keepAlloc=True (bool) |
Milik | Detail |
---|
Tersedia | Dapatkan atau atur ketersediaan slot |
Ukuran | Dapatkan ukuran buffer slot |
Penyangga | Dapatkan buffer slot |
Detail kelas XBufferSlots :
Metode | Argumen |
---|
Konstruktor | slotsCount (int), slotsSize (int), keepAlloc=True (bool) |
DapatkanSlot yang Tersedia | Tidak ada |
Milik | Detail |
---|
Jumlah Slot | Dapatkan jumlah slot |
Ukuran Slot | Dapatkan ukuran buffer setiap slot |
slot | Dapatkan daftar slot |
Detail kelas XFiFo :
Metode | Argumen |
---|
Konstruktor | Tidak ada |
Meletakkan | obj (objek) |
Mendapatkan | Tidak ada |
Jernih | Tidak ada |
Milik | Detail |
---|
Kosong | Kembalikan True jika FiFo kosong |
Oleh JC`zic untuk HC² ;')
Tetap sederhana, bodoh ?