socket_server 基本用法1
阿新 • • 發佈:2018-09-03
ESS style input except err serve self bsp host
使用socketserver基本遵循下面幾個步驟
1、創建一個類,繼承socketserver.BaseRequestHandler;並且重寫裏面的handle方法
2、實例化TCP_server,將ip地址 以及步驟1中創建的類傳遞進去
3、使用server_forever處理client發過來的請求。
sockerserver 服務端代碼
1 # _*_ coding:utf-8 _*_ 2 import socketserver 3 4 class My_tcphandler(socketserver.BaseRequestHandler): #繼承base類,創建自己的TCP處理類5 def handle(self): #重寫base類中handle方法 6 while True: #持續和客戶端進行數據交互 7 try: 8 self.data = self.request.recv(1024) #handle中連接的描述不在像socket中的conn,而是self.request進行收發數據 9 print(‘self.client_address:‘,self.client_address) 10 print(‘recv data:‘,self.data) 11 self.request.send(self.data.upper()) #可以直接對字符串進行操作??? 12 except ConnectionResetError as e: 13 print(‘err‘,e) 14 break 15 16 if __name__ == "__main__": 17 host,port = ‘localhost‘,9999 18 server = socketserver.TCPServer((host,port),My_tcphandler) #實例化server,將地址信息以及自己重寫的base類作為參數傳遞進去。 19 server.serve_forever() #調用實例的forever方法
sockerserver 客戶端代碼
1 # _*_ coding:utf-8 _*_ 2 import socket,hashlib 3 client = socket.socket() #創建連接描述符,指定socket連接的網絡層和傳輸層協議,默認使用ipv4/tcp 4 client.connect(("localhost",9999)) #使用連接描述符連接server,server信息以元組形式傳入,包含ip地址和端口號 5 while True: 6 cmd = input("input your command,server will return upper format:") 7 if len(cmd) == 0: 8 continue 9 client.send(cmd.encode(encoding=‘utf-8‘)) 10 print(‘recv data:‘,client.recv(1024).decode() ) 11 client.close()
socket_server 基本用法1