多執行緒伺服器
阿新 • • 發佈:2018-12-02
#coding=utf-8 from socket import * from threading import Thread from time import sleep # 處理客戶端的請求並執行事情 def dealWithClient(newSocket,destAddr): while True: recvData = newSocket.recv(1024) if len(recvData)>0: print('recv[%s]:%s'%(str(destAddr), recvData)) else: print('[%s]客戶端已經關閉'%str(destAddr)) break newSocket.close() def main(): serSocket = socket(AF_INET, SOCK_STREAM) serSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR , 1) localAddr = ('', 7788) serSocket.bind(localAddr) serSocket.listen(5) try: while True: print('-----主程序,,等待新客戶端的到來------') newSocket,destAddr = serSocket.accept() print('-----主程序,,接下來建立一個新的程序負責資料處理----') client = Thread(target=dealWithClient, args=(newSocket,destAddr)) client.start() #因為執行緒中共享這個套接字,如果關閉了會導致這個套接字不可用, #但是此時線上程中這個套接字可能還在收資料,因此不能關閉 #newSocket.close() finally: serSocket.close() if __name__ == '__main__': main()