標籤:span read close 串連 target python sele selector soc
import socketimport selectorsimport threadingimport timeselector = selectors.DefaultSelector()socket_server = socket.socket()address_server = (‘0.0.0.0‘,8080)socket_server.bind(address_server)socket_server.listen(1000)def wokter(socket_ser): #多線程通訊端 while True: massage = socket_ser.recv(1024) if massage: socket_ser.send(massage) else: socket_ser.close()while True: socket_ser, address = socket_server.accept() socket_thre =threading.Thread(target=wokter, args=(socket_ser,)) socket_thre.start()def server_read(connect): #epoll的socket massage = connect.recv(1024) if massage: connect.send(massage) else: selector.unregister(connect)#清除註冊 connect.close()def accept(socket_server): socket_ser, address = socket_server.accept() socket_ser.setblocking(False) selector.register(socket_ser, selectors.EVENT_READ, server_read)#註冊事件回調socket串連selector.register(socket_server, selectors.EVENT_READ, accept)#註冊事件回調socket對象while True: events = selector.select()#查詢所有準備好的事件,一個二元組列表 for key,massk in events: callback = key.data #拿到回呼函數 sock = key.fileobj #拿到註冊的那個socket callback(sock) #回調執行
python 並發socket