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)
  • 相关阅读:
    git stash回退
    基于git tag快速修复
    Go语言开发规范
    defer实现原理
    string数据结构
    关于const iota
    struct
    map数据结构底层详解
    go 函数进阶
    go 内存分配原理
  • 原文地址:https://www.cnblogs.com/cloniu/p/6258962.html
Copyright © 2011-2022 走看看