python3 socketserver_python -----建一个SocketServerTCP服务器

建一个SocketServerTCP服务器

在代码中,先导入我们的服务器类,然后像之前一样定义主机常量。主机常量后就是我们的请求处理器类,然后是启动代码。在下面的代码片段中可以看到更多细节。

逐行解释

1~9行

最开始的部分是从SocketServer导入需要的类。注意,我们在使用Python

2.4的多行导入的方式。如果你使用老版本的Python,那么你要使用模块的形如module.attribute的名字。或者在导入的时候,把代码写在同一行里:

from SocketServer import TCPServer as TCP, StreamRequestHandler as SRH

例16.5 SocketServer时间戳TCP服务器(TsTservss.py)

使用SocketServer里的TCPServer和StreamRequestHandler类创建一个时间戳TCP服务器。

1 #!/usr/bin/env python

2

3 from SocketServer import (TCPServer as TCP,

4 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(),

15 self.rfile.readline()))

16

17 tcpServ = TCP(ADDR, MyRequestHandler)

18 print 'waiting for connection...'

19 tcpServ.serve_forever()

11~15行

主要的工作在这里。我们从SocketServer的StreamRequestHandler类中派生出一个子类,并重写handle()函数。在BaseRequest类中,这个函数因没有默认动作而被中断:

def handle(self):

pass

在有客户消息进来的时候,handle()函数就会被调用。StreamRequestHandler类支持像操作文件对象那样操作输入输出套接字。我们可以用readline()函数得到客户消息,用write()函数把字符串发给客户端。

为了保持一致性,我们要在客户端与服务器两端的代码里都加上回车与换行。实际上,你在代码中看不到这个,因为,我们重用了客户端传过来的回车与换行。除了这些我们刚刚说到的不同之处外,代码看上去与之前的那个服务器是一样的。

17~19行

代码的最后部分用给定的主机信息和请求处理类创建TCP服务器。然后进入等待客户端请求与处理客户请求的无限循环中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值