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

    server端

    import socket
    sk = socket.socket()
    sk.bind(('127.0.0.1', 8010))
    sk.setblocking(False)   #
    sk.listen()
    conn_l = []
    del_conn = []
    while True:
        try:
            conn, addr = sk.accept()    # 不阻塞,但是没人连我会报错
            print('建立连接了:', addr)
            conn_l.append(conn)
        except BlockingIOError:
            for con in conn_l:
                try:
                    msg = con.recv(1024)  # 非阻塞,如果没有数据就报错
                    if msg == b'':
                        del_conn.append(con)
                        continue
                    print(msg)
                    con.send(b'bye')
                except BlockingIOError:
                    pass
            for con in del_conn:
                con.close()
                conn_l.remove(con)
            del_conn.clear()

    client端

    import time
    import socket
    import threading
    
    
    def func():
        sk = socket.socket()
        sk.connect(('127.0.0.1', 8010))
        sk.send(b'hello')
        time.sleep(1)
        print(sk.recv(1024))
        sk.close()
    
    
    for i in range(2):
        threading.Thread(target=func).start()
  • 相关阅读:
    Jenkins
    python爬虫
    git分布式版本控制
    CKA考试认证总结
    gitlab-ci 工具链
    gitlab-ci 模板库实践
    gitlab-cicd
    gitlab配置文件gitlab.rb详解
    局部变量表中的slot简述
    JVM系统线程类型
  • 原文地址:https://www.cnblogs.com/wt7018/p/11624441.html
Copyright © 2011-2022 走看看