1. 程式人生 > >socket_server 基本用法1

socket_server 基本用法1

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