zoukankan      html  css  js  c++  java
  • python 之网络并发(非阻塞IO模型)

    实现gevent模块

    服务端:

    from socket import *
    import time
    
    s = socket()
    s.bind(('127.0.0.1',8080))
    s.listen(5)
    s.setblocking(False)
    
    r_list=[]
    w_list=[]
    while True:
        try:
            conn, addr = s.accept()
            r_list.append(conn)
    
        except BlockingIOError:
            # time.sleep(0.05)
            print('可以去干其他的活了')
            print('rlist: ',len(r_list))
    
            # 收消息
            del_rlist=[]
            for conn in r_list:
                try:
                    data=conn.recv(1024)
                    if not data:
                        conn.close()
                        del_rlist.append(conn)
                        continue
                    # conn.send(data.upper())
                    w_list.append((conn,data.upper()))
                except BlockingIOError:
                    continue
                except ConnectionResetError:
                    conn.close()
                    # r_list.remove(conn)
                    del_rlist.append(conn)
    
            # 发消息
            del_wlist=[]
            for item in w_list:
                try:
                    conn=item[0]
                    res=item[1]
                    conn.send(res)
                    del_wlist.append(item)
                except BlockingIOError:
                    continue
                except ConnectionResetError:
                    conn.close()
                    del_wlist.append(item)
    
            # 回收无用连接
            for conn in del_rlist:
                r_list.remove(conn)
    
            for item in del_wlist:
                w_list.remove(item)
    View Code

    客户端:

    from socket import *
    import os
    
    client = socket()
    client.connect(('127.0.0.1', 8080))
    
    while True:
        data='%s say hello' %os.getpid()
        client.send(data.encode('utf-8'))
        res=client.recv(1024)
        print(res.decode('utf-8'))
    View Code
  • 相关阅读:
    java动态注册Filter,Servlet,Listener
    java防止html脚本注入
    java中常用的几种跨域方式
    backbone 要点知识整理
    创建对象-constructor丢失的问题
    css3 动画(animation)-简单入门
    sass安装
    sass安装步骤
    javascript how sort() work
    javascript 获取调用属性的对象
  • 原文地址:https://www.cnblogs.com/mylu/p/11184933.html
Copyright © 2011-2022 走看看