import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
try:
while True:
self.data=self.request.recv(1024) #拿到客户端发送的数据
print("{} send:".format(self.client_address),self.data)
if not self.data: #判断是否拿到数据,否则连接失败
print("connection lost")
break
# print("self.data:",self.data.upper())
self.request.sendall(self.data.upper()) #返回大写数据
except Exception as e:
print(self.client_address,"连接断开")
finally:
self.request.close() #异常之后,关闭连接
def setup(self):
print("before handle,连接建立:",self.client_address)
def finish(self):
print("finish run after handle")
if __name__=="__main__":
HOST,PORT = "localhost",9999
server=socketserver.TCPServer((HOST,PORT),MyTCPHandler) #实例对象,传入参数
# 多线程
# server = socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)
server.serve_forever() #一直运行
import socket
client=socket.socket()
client.connect(('localhost',9999)) #请求连接
while True:
cmd=input("(quit退出)>>").strip()
if len(cmd)==0:
continue
if cmd=="quit":
break
client.send(cmd.encode()) #发送给服务端 utf-8
cmd_res=client.recv(1024) #接收
print(cmd_res.decode())
client.close()