zoukankan      html  css  js  c++  java
  • python实现单线程多任务非阻塞TCP服务端

    代码

    # coding:utf-8
    from socket import *
    
    # 1.创建服务器socket
    sock = socket(AF_INET, SOCK_STREAM)
    
    # 2.绑定主机和端口
    addr = ('', 7788)  #
    sock.bind(addr)
    
    # 3. 设置最大监听数目,并发
    sock.listen(10)
    
    # 4. 设置成非阻塞
    sock.setblocking(False)
    # 保存客户端socket
    clientAddrList = []
    # print(sock.)
    
    while 1:
        try:
            clientSocket, clientAddr = sock.accept()
        except:
            pass
        else:
            print("一个新客户端到来:%s" % str(clientAddr))
            clientSocket.setblocking(False)
            clientAddrList.append((clientSocket, clientAddr))
    
        for clientSocket, clientAddr in clientAddrList:
            try:
                recvData = clientSocket.recv(1024)
            except:
                pass
            else:
                if len(recvData) > 0:
                    print("%s:%s" % (str(clientAddr), recvData))
                else:
                    clientSocket.close()
                    clientAddrList.remove((clientSocket, clientAddr))
                    print("%s 已经下线" % str(clientAddr))
  • 相关阅读:
    background-clip与background-origin
    jquery判断一个元素是否为某元素的子元素
    Math.pow()实现开任意次方根
    vue基础点
    css3
    css系统学习
    angularJs
    jquery与JavaScript
    bootstrapt使用
    bootstrap
  • 原文地址:https://www.cnblogs.com/vathe/p/7001127.html
Copyright © 2011-2022 走看看