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