zoukankan      html  css  js  c++  java
  • 非阻塞IO

    服务端
    from socket import *
    import time
    server = socket(AF_INET,SOCK_STREAM)
    server.bind(('127.0.0.1',8081))
    server.listen(3)
    server.setblocking(False)      #accept变为非阻塞状态,
    print('server startting...')
    conn_l = []       #存放原始数据
    del_l = []     #存放错误的数据
    while True:               #链接循环
        try:
            print('=====>',conn_l)    #链接地址
            conn,addr = server.accept()    #如果没有异常处理立马抛出错误    conn是链接,可以收发消息
            # print(addr)
            conn_l.append(conn)
        except BlockingIOError:   #收不到数据干这里的
            time.sleep(4)   #休眠两秒,继续
            for conn in conn_l:    #再次循环列表中的conn
                try:
                    data = conn.recv(1024)
                    conn.send(data.upper())
                except BlockingIOError:
                    pass
                except ConnectionResetError:
                    del_l.append(conn)  #错误的conn添加到del_l
            for obj in del_l:
                obj.close()      #和conn.close   一样,只是换了个名字
                conn_l.remove(obj)       #将那个错误的obj直接从元列表删除
            del_l = []            #清空列表    清空之后下次还可以接收,删除了就没地方存放他的值
            continue
    #新建一个存放错误值的列表,然后
    
    
    客户端
    from socket import *
    client = socket(AF_INET,SOCK_STREAM)
    client.connect(('127.0.0.1',8081))
    while True:
        msg = input('p;ease:').strip()
        if not msg:continue
        client.send(msg.encode('utf-8'))
        data = client.recv(1024)
        print(data.decode('utf-8'))
    

      

  • 相关阅读:
    访当当网的图标
    关于手触
    关于位置——CSSOM视图模式(CSSOM View Module)相关整理
    js 进制 转换
    函数的引用, 关于内存的开销
    一些
    HTML特殊符号对照表
    页面选中文字的javascript
    获取元素相对于页面的位置 和 页面高度 和 页面滚动高度
    i+1 和 i++ 的区别
  • 原文地址:https://www.cnblogs.com/52-qq/p/7464679.html
Copyright © 2011-2022 走看看