zoukankan      html  css  js  c++  java
  • 单线程并发的server端

    非阻塞I/O模型

    • 主要是服务器的启动

    • sk.setblocking(False)设置这个,当服务器没有连接或者接收不到消息时报BlockingIOError 错误

        #server端
        import socket
        
        sk = socket.socket()
        sk.bind(('127.0.0.1', 8080))
        sk.listen()
        
        sk.setblocking(False)	#设置服务器的accept, recv均为非阻塞
        
        conn_l = []	#连接上的conn都会加入这个列表中
        del_l = []	#断开的conn都会加入到这个列表中
        while 1:
            try:
                conn, addr = sk.accept()	
                conn_l.append(conn)
        
            except BlockingIOError:
                try:
                    for conn in conn_l:
                        ret = conn.recv(1024)
                        if ret == b'':
                            del_l.append(conn)
                            continue
                        else:
                            print(ret)
                    
                except BlockingIOError:
                    pass
        
                for conn in del_l:
                		conn.close()
                    conn_l.remove(conn)
                del_l.clear()
        ——————————————————————————————————
        #client 客户端
        多个客户端同时启动连接服务进行测试
  • 相关阅读:
    mysql用户
    mysql字符集
    tidb之一致性算法raft学习
    更新港资股票数据
    php中的时区设置
    PHP 中的注释
    python下如何处理windows的路径名
    安装第三方模块
    偏函数
    装饰器没学明白,记录一下,以后再学
  • 原文地址:https://www.cnblogs.com/liliudong/p/9746286.html
Copyright © 2011-2022 走看看