zoukankan      html  css  js  c++  java
  • 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,'
    ',sk1.accept())
            if i == sk1:
                # print(i.accept(),'
    ',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)
  • 相关阅读:
    必备单词
    Vim
    Linux基础
    python链表操作详解
    冒泡和快速排序
    学员练车选课系统
    面试题
    获取resp:heads:content-disposition的filename
    记录springBoot启动报错(无脑型)
    springBoot+Vue搭建新项目(1)
  • 原文地址:https://www.cnblogs.com/cloniu/p/6258962.html
Copyright © 2011-2022 走看看