SocketServer 是标准库中一个高级别的模块。用于简化网络客户与服务器的实现。python
注意:在Python3中,本模块为socketserver模块。在Python 2中,本模块为SocketServer模块。因此在用import导入时,要分状况导入,不然会报错。服务器
SocketServer 模块的类网络
类 描述python2.7
BaseServer 包含服务器的核心功能与混合(mix-in)类的钩子功能。这个类用于派生,异步
不要直接生成这个类的类对象,能够考虑使用 TCPServer 和UDPServer。
TCPServer/UDPServer 基本的网络同步 TCP/UDP 服务器
UnixStreamServer/ 基本的基于文件同步 TCP/UDP 服务器
UnixDatagramServer
ForkingMixIn/ 实现了核心的进程化或线程化的功能,用于与服务器类进行混合(mix-in),以提供一些异步特性。
ThreadingMixIn 不要直接生成这个类的对象
ForkingTCPServer/ ForkingMixIn 和 TCPServer/UDPServer 的组合
ForkingUDPServer
ThreadingTCPServer/ ThreadingMixIn 和 TCPServer/UDPServer 的组合
ThreadingUDPServer
BaseRequestHandler 包含处理服务请求的核心功能。只用于派生新的类,不要直接生成这个类的对象,
能够考虑使用 StreamRequestHandler 或DatagramRequestHandler
StreamRequestHandler/ TCP/UDP 服务器的请求处理类的一个实现
DatagramRequestHandler
如今写一个 SocketServerTCP 服务器:socket
服务器客户端:tcp
1 # -*- coding: utf-8 -*- 2 #!/usr/bin/env python 3 4 from SocketServer import (TCPServer as TCP,StreamRequestHandler as SRH) 5 from time import ctime 6 7 host = '' 8 port = 21567 9 addr = (host,port) 10 11 class MyRequestHandler(SRH): 12 def handle(self): 13 print('...connected from:',self.client_address) 14 self.wfile.write('[%s]%s'%(ctime(),self.rfile.readline)) 15 16 tcpServ = TCP(addr,MyRequestHandler) 17 print('waiting for connection...') 18 tcpServ.serve_forever()
客户端编写:测试
1 # -*- coding: utf-8 -*- 2 #!/usr/bin/env python 3 4 from socket import * 5 6 host = 'localhost' 7 port = 21111 8 BUFSIZ = 1024 9 addr = (host,port) 10 11 while True: 12 s = socket(AF_INET,SOCK_STREAM) 13 s.connect(addr) 14 data=raw_input('>>>>>') 15 if not data: 16 print('null') 17 break 18 s.send('%s\r\n'%data) 19 data = s.recv(1024) 20 if not data: 21 print('there is nothing.') 22 break 23 print (data.strip()) 24 25 s.close()
python2.75测试,服务端连上,客户端报出异常spa