一、首先介绍一下 socketserver 模块中的类:

描述
BaseServer 包含服务器的核心功能与混合(mix-in)类的钩子功能。这个类用于派生,不要直接生成这个类的类对象
TCPServer/UDPServer 基本的网络同步TCP\UDP服务器
UnixStreamServer/UnixDatagramServer 基本的基于文件同步TCP\UDP服务器
ForkingTCPServer/ForkingUDPServer  ForkingMixIn 和 TCPServer/UDPServer 的组合 
StreamRequestHandler/DatagramRequestHandler TCP/UDP 服务器的请求处理类的一个实现
ThreadingTCPServer/ThreadingUDPServer   ThreadingMixIn 和 TCPServer/UDPServer 的组合 
BaseRequestHandler  包含处理服务请求的核心功能。只用于派生新的类,不要直接生成这个类的对象,可以考虑使用StreamRequestHandler或DatagramRequestHandler
# 服务端

# -*- coding: utf-8 -*-
import socketserver



class MyTCPhandler(socketserver.BaseRequestHandler):
# handle 方法必须定义,因为在该继承的父类中已经定义了该接口 def handle(self): while True: try: data = self.request.recv(1024) if len(data) == 0: break print('收到客户端消息:%s' % data) self.request.send(data.upper()) except ConnectionResetError: break self.request.close() if __name__ == '__main__': # socketserver在windows系统之上,不支持多进程 server = socketserver.ThreadingTCPServer(('127.0.0.1', 8080), MyTCPhandler) server.serve_forever() # 连接循环

  

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
# 客户端

from socket import *

client = socket(AF_INET, SOCK_STREAM)
client.connect(('127.0.0.1', 8080))

while True:
    data = input('>>>:').strip()
    if not data: continue
    # client.send('hello'.encode('utf-8'))
    client.send(data.encode('utf-8'))
    get_data = client.recv(1024)
    print(get_data.decode('utf-8'))

  

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄