单进程---单线程的非阻塞

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

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

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

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

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


单进程---单线程的非阻塞_第1张图片

你可能感兴趣的:(单进程---单线程的非阻塞)