epoll IO多路復用

2022-07-27 09:15:11 字數 835 閱讀 7356

1.在socket.listen()後創乙個epoll物件   epoll = select.epoll()

2.將server_socket註冊到epoll中        epoll.register( )

3. conn_dict = dict() 用來儲存新的socket物件和對應的fd和關係     addr_dict = dict()用來儲存      新的socket物件的ip埠和對應的fd和關係

3.while true:

5.epoll_list = epoll.poll()    建立乙個epoll列表  epoll_list中是【(套接字的檔案描述符, 狀態),(···,····),(····,·····),】

4.遍歷epoll列表  用兩個變數fd,evevt接受 。

5.判斷 if fd == server.socket.fileno():   說明是新連線

把新的套接字註冊到epoll中 epoll.register()

conn_dict[new_socket.fileno()] = new_socket

addr_dict[new_socket.fileno()] = new_addr             

if even == select.epollin:    說明是連線的客戶端發來訊息了

接受處理就好 

如果客戶機關閉了連線 :

epoll.unregister(fd)      從epoll中去掉這和套接字

conn_dict[fd].close()     關閉本次連線

del conn_dict[fd]         

del addr_dict[fd]

Linux IO多路復用

一.select 函式 include include include int select int n,fd set readfds,fd set writefds,fd set exceptfds,struct timeval timeout fd clr int fd,fd set set f...

I O多路復用

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

Linux C Socket多路復用

1.迴圈伺服器 udp伺服器 udp迴圈伺服器的實現非常簡單 udp伺服器每次從套接字上讀取乙個客戶端的請求,處理,然後將結果返回給客戶機.可以用下面的演算法來實現.socket bind while 1 因為udp是非面向連線的,沒有乙個客戶端可以老是佔住服務端.只要處理過程不是死迴圈,伺服器對於...