標籤:threading data 解碼 說明 erp nbsp 發送資料 服務 imp
socket伺服器代碼如下
from socket import *import timeimport threading,_thread as threadmyHost = ‘‘ #‘‘說明所有IP都可以串連myPort = 50007 #設定一個連接埠socketobj = socket(AF_INET,SOCK_STREAM) #建立TCP對象socketobj.bind((myHost,myPort)) #綁定連接埠socketobj.listen(5) #允許5個請求串連def now(): return time.ctime(time.time())def handleClient(connection): #time.sleep(5) while True: data = connection.recv(1024) #每次讀取最多1024位元組 if not data: break reply = ‘Echo=> %s at %s‘ % (data,now()) #發送資料給用戶端 connection.send(reply.encode()) connection.close()def dispatcher(): while True: connection,address = socketobj.accept() #接受資料並列印 print(‘Server connected by,‘,address,end=‘‘) print(‘at‘,now()) #thread.start_new_thread(handleClient,(connection,)) #使用多線程 thread = threading.Thread(target=handleClient,args=(connection,)) #使用多線程 thread.start() #開始線程dispatcher()
socket用戶端代碼如下
from socket import *serverHost = ‘localhost‘serverPort = 50007while True: messages = [input(‘輸入‘).encode()] #輸入資訊,並設定編碼, 可設定b‘‘或者str.encode() socketobj = socket(AF_INET, SOCK_STREAM) # 建立TCP對象 socketobj.connect((serverHost, serverPort)) # 串連連接埠 for line in messages: socketobj.send(line) data = socketobj.recv(1024) # 從伺服器接受資訊 print(‘Client received:‘, data.decode()) #列印資訊,解碼列印,str.decode() socketobj.close()
1.2socket伺服器使用多線程