angrykola

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SocketServer 是标准库中一个高级别的模块。用于简化网络客户与服务器的实现。

注意:在Python3中,本模块为socketserver模块。在Python 2中,本模块为SocketServer模块。所以在用import导入时,要分情况导入,否则会报错。

SocketServer 模块的类

 

       类                 描述

   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 服务器:

服务器客户端:

 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测试,服务端连上,客户端报出异常

posted on 2013-11-26 13:49  kolaman  阅读(487)  评论(0)    收藏  举报