python網絡編程<4>:SocketServer 模塊

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

相關文章
相關標籤/搜索