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))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM