IO多路复用,实现多线程监听

服务端
import socket

sk1 = socket.socket()
sk1.bind(('127.0.0.1',8001))
sk1.listen()

sk2 = socket.socket()
sk2.bind(('127.0.0.1',8002))
sk2.listen()

sk3 = socket.socket()
sk3.bind(('127.0.0.1',8003))
sk3.listen()

inp = [sk1,]
import select

while True:
    print(len(inp))
    #r_list 接收inp参数  如果有用户来链接 它就会感知到,
    #w_list 可以写固定句柄 进行监听 如果 [sk1,sk3]
    #e_list 监听发生错误的句柄,如果有把就把它移除掉, 如下面for循环
    r_list, w_list, e_list= select.select(inp,[],[],1)
    for i in r_list:
        # print(i,'\n',sk1.accept())
        if i == sk1:
            # print(i.accept(),'\n',sk1.accept())
            conn,address = i.accept()
            inp.append(conn)
            print(inp)
        else:
            try:
                str(conn.recv(1024),encoding='utf-8')
                conn.sendall(bytes('hello',encoding='utf-8'))
            except Exception as e:
                inp.remove(i)

客户端
import socket

obj = socket.socket()
obj.connect(('127.0.0.1',8001))
inp = input('')
obj.sendall(bytes(inp,encoding='utf-8'))
r = str(obj.recv(1024),encoding='utf-8')
print(r)

 

posted @ 2017-01-07 11:31  200ML  阅读(474)  评论(0编辑  收藏  举报