標籤:python socket
Python socket模組實現TCP服務端用戶端
寫了詳細的注釋,如果有哪一行不明白,可留言哦。
服務端指令碼
# _*_ coding: utf-8 _*___author__ = ‘xiaoke‘__date__ = ‘2018/6/13 14:39‘# 這個指令碼建立一個TCP伺服器,它接收來自用戶端的訊息,然後將訊息加上時間戳記首碼並返回用戶端import socketfrom time import ctimeHOST = ‘‘PORT = 21567BUFSIZ = 4096ADDR = (HOST, PORT)# 建立TCP通訊端tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 建立UDP通訊端# udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)tcpSock.bind(ADDR) # 將地址綁定到通訊端上tcpSock.listen(5) # 設定並啟動TCP監聽器while True: print("waiting for connection....") tcpCliSock, addr = tcpSock.accept() # 被動接收TCP用戶端串連,一直等待直到串連到達(阻塞) print("... connected from", addr) while True: data = tcpCliSock.recv(BUFSIZ) # 接收TCP訊息 # print(data) # 如果有資料加上時間戳記後返回給用戶端,因為只接受位元組資料,所以把資料使用bytes函數轉換 if not data: break tcpCliSock.send(bytes(‘[%s] %s‘ % (ctime(), data.decode(‘utf-8‘)), ‘utf-8‘)) tcpCliSock.close()# tcpSock.close()
用戶端指令碼
# _*_ coding: utf-8 _*___author__ = ‘xiaoke‘__date__ = ‘2018/6/13 16:01‘import socketimport sysHOST = ‘127.0.0.1‘PORT = 21567BUFSIZ = 4096ADDR = (HOST, PORT)# 建立用戶端TCP串連tcpCliSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 串連伺服器try: tcpCliSock.connect(ADDR)except Exception as e: print("串連伺服器失敗:",e) sys.exit(-1)while True: data = input(‘> ‘) if not data: break # 迴圈發送資料,直到沒有資料發送退出 tcpCliSock.send(bytes(data, encoding=‘utf-8‘)) # 接收服務端返回的訊息,如果沒有訊息返回,也將退出迴圈 data = tcpCliSock.recv(BUFSIZ) if not data: break print(data.decode(‘utf-8‘))tcpCliSock.close()
Python socket模組實現TCP服務端用戶端