SocketServer 模块是一个基于 socket 模块的高级别的套接字通讯模块,用于简化网络客户与服务器的实现,它支持使用多进程或多线程处理客户端请求
[[email protected] ~]# cat socketserver.py #!/usr/bin/env python #-*- coding:utf-8 -*- import SocketServer class MyTCPHandler(SocketServer.BaseRequestHandler): # 定义一个类,并继承BaseRequestHandler这个类 def handle(self): # 重写handle方法,handle用来处理客户端请求 while True: self.data = self.request.recv(1024).strip() 2.接收客户端请求 print(self.client_address[0]) print(self.data) self.request.sendall(self.data.upper()) 3.发送客户端请求结果 if not self.data: break if __name__ == "__main__": HOST, PORT = "localhost", 1234 server = SocketServer.ThreadingTCPServer((HOST, PORT), MyTCPHandler) 1.创建一个TCP数据流的套接字(实现了多线程) server.serve_forever() # 表示主进程不退出,如果主进程退出了,线程也就退出了,因此该方法相当于一直运行服务端来接收客户端请求,不退出
[[email protected] ~]# cat client.py #!/usr/bin/env python #-*- coding: utf8 -*- import time import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((‘127.0.0.1‘, 1234)) while True: s.sendall(‘Hello World‘) data = s.recv(1024) print(data) time.sleep(1) s.close()
可以有多个客户端连接,服务端会多线程处理