join_mark

 

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"))
 

posted on 2018-08-22 22:47  join_mark  阅读(131)  评论(0)    收藏  举报

导航