python 非阻塞tcp服务器

 
 
import socket

import time


def main():
   # 创建一个tcp服务器端
   tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   # 复用
   tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

   # 绑定
   tcp_server.bind(("", 8976))

   # 被 动
   tcp_server.listen(128)

   #设置非堵塞
   tcp_server.setblocking(False)

   #客户端列表
   clients = list()

   while True:
      time.sleep(1)
      try:
         client, addr = tcp_server.accept()

         print(client)
         client.setblocking(False)
         #有客户端就放入
         clients.append(client)


      except Exception as e:
         print("-------没有客户端------")

      #列表循环
      for client_new in clients:

         try:
            data = client_new.recv(1024).decode()
            if data:
               #有数据
               print(data)
            else:
               #关闭客户端
               client_new.close()  #关闭客户端
               clients.remove(client_new)  #循环删除

         except Exception as e:
            print("------没有数据-----")


   tcp_server.close()


if __name__ == '__main__':
   main()

猜你喜欢

转载自blog.csdn.net/weixin_42007629/article/details/79966966