IO多路復用

2022-08-23 08:57:10 字數 1192 閱讀 5290

i/o多路復用指:通過一種機制,可以監視多個描述符,一旦某個描述符就緒(一般是讀就緒或者寫就緒),能夠通知程式進行相應的讀寫操作

服務端import socket

sk1 = socket.socket()

sk1.bind(('127.0.0.1',8001))

sk1.listen()

sk2 = socket.socket()

sk2.bind(('127.0.0.1',8001))

sk2.listen()

sk3 = socket.socket()

sk3.bind(('127.0.0.1',8001))

sk3.listen()

inputs = [sk1,sk2,sk3, ]

import select

while true:

#[sk1,sk2,sk3, ],select 內部自動監聽sk1,sk2,sk3三個物件

#如果有人連線sk1

#r_list = [sk1,sk2,sk3]

r_list, w_list, e_list = select.select(inputs,,,1)

for sk in r_list:

#連線每個物件

conn,address = sk.accept()

conn.sendall(bytes('hello',encoding='utf-8'))

conn.close()

for sk in e_list:

inputs.remove(sk)

客戶端sk1

import socket

obj = socket.socket()

obj.connect(('127.0.0.1',8001))

content = str(obj.recv(1024),encoding='utf-8')

print(content)

obj.close()

客戶端sk1

import socket

obj = socket.socket()

obj.connect(('127.0.0.1',8002))

content = str(obj.recv(1024),encoding='utf-8')

print(content)

obj.close()

I O多路復用

一 五種i o模型 1 阻塞i o模型 最流行的i o模型是阻塞i o模型,預設情形下,所有套介面都是阻塞的。我們以資料報套介面為例來講解此模型 我們使用udp而不是tcp作為例子的原因在於就udp而言,資料準備好讀取的概念比較簡單 要麼整個資料報已經收到,要麼還沒有。然而對於tcp來說,諸如套介面...

i o多路復用

最常見的i o多路復用就是 select poll epoll了,下面說說他們的一些特點和區別吧。select 可讀 可寫 異常三種檔案描述符集的申明和初始化。fd set readfds,writefds,exceptionfds fd zero readfds fd zero writefds ...

I O多路復用

我們都知道unix like 世界裡,一切皆檔案,而檔案是什麼呢?檔案就是一串二進位製流而已,不管socket,還是fifo 管道 終端,對我們來說,一切都是檔案,一切都是流。在資訊 交換的過程中,我們都是對這些流進行資料的收發操作,簡稱為i o操作 input and output 往流中讀出資料...