单线程单进程实现非阻塞

单进程单线程的非阻塞

设置套接字为非阻塞的方式:    tcp_server_socket.setblocking(Flase)

也要把new_socket设置为非阻塞方式:new_socket.setblocking(Flase)

accept()是判断是否有新客户端到来recv是判断是否有新数据到来

单进程单线程不能同一时刻为别人服务,一定是并发不是并行,因为要是并行的话在列表里面的客户端时要同时为别人服务的

先进入while:True循环,然后判断是否有新客户到来,要是没有就不会走else其中的列表是空的所以就不会进入for循环;当有新的客户端连接时就会走else其中列表就不为空就会走for循环,就会调用已有的连接rece()来进行数据的获取,其中要是数据没有来就会进行下一轮循环,当有新的数据获取会产生两种状况:(1)对方已发送过来数据(2)对方调用close()导致了recv()返回



非阻塞长连接的特点是不断开浏览器可以接着用链接发送请求,目的就是降低资源的消耗

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容