python IO多路复用
#IO多路复用:优势:可以同时监听多个连接
#触发方式:水平触发 和 边缘触发
#水平触发:高低电平触发的时候,只有高电平或低电平会触发
#边缘触发:只有在高低电平之间切换的时候会触发
#IO多路复用:有三种模式 select(跨平台,最多连接量1024个) poll(相对于select连接没有限制) epoll(最好的)
# #IO多路复用:优势:可以同时监听多个连接
##############################IO多路复用select及触发方式 server端#############################################
# import socket
# import select #多路复用
#
# sk=socket.socket()
# sk.bind(("127.0.0.1",9004))
# sk.listen(5)
# while True:
#
# r,w,e=select.select([sk,],[],[],5)
# for i in r:
# conn,add=i.accept()
# print(i)
# print(add)
# print(conn)
# print("hello")
#
# print(">>>>")
##############################IO多路复用select及触发方式 client端#############################################
#import socket
#
# sk=socket.socket()
# sk.connect(("127.0.0.1",9004))
#
# while 1:
#
# inp=input(">>").strip()
# sk.send(inp.encode("utf8"))
# data=sk.recv(1024)
# print(data.decode("utf8"))
#2.IO多路复用select实现并发server
######################################## Server端 ##########################################
# import socket,select
#
# sk=socket.socket()
# sk.bind(("127.0.0.1",8009))
# sk.listen(5)
# inputs=[sk,]
# while True:
# r,w,e=select.select(inputs,[],[],5)
#
# for obj in r:
# if obj==sk:
# conn,add=obj.accept()
# print(conn)
# inputs.append(conn)
# else:
# data_byte=obj.recv(1024)
# print(str(data_byte,"utf8"))
# inp=input("回答%s号客户>>>"%inputs.index(obj))
# obj.sendall(bytes(inp,'utf8'))
#
# print(">>>",r)
######################################## Client端 ##########################################
#可以多个client来实现并发的操作
#import socket
#
# sk = socket.socket()
# sk.connect(("127.0.0.1",8009))
#
# while True:
# inp=input(">>>>>")
# sk.sendall(bytes(inp,"utf8"))
# data = sk.recv(1024)
# print(str(data,"utf8"))
浙公网安备 33010602011771号