2004年08月13日 星期五 10:52
################WebServer.py####################### from twisted.internet import protocol, reactor, defer from twisted.protocols import basic from twisted.protocols.basic import FileSender from string import lower from time import time import sys, os basepath=os.path.abspath(os.path.dirname(sys.argv[0])) mtypes={ 'html':'text/html', 'htm':'text/html', 'txt':'text/plain', 'log':'text/plain', 'jpg':'image/jpeg', 'jpeg':'image/jpeg', 'gif':'image/gif', 'bmp':'image/bmp', 'png':'image/png', } class FingerProtocol(basic.LineReceiver): def lineReceived(self, user): GETs=(user.split(' '))[1] Getpeer=self.transport.getPeer() IP=Getpeer.host Port=Getpeer.port h=open(basepath+'/Web.Log','ab') h.write( user+' '+str(IP)+' '+ str(Port)+'\r\n') h.close() self.factory.getUser(GETs,self) class FingerFactory(protocol.ServerFactory): protocol = FingerProtocol def __init__(self, **kwargs): self.users = kwargs def getUser(self, user,oself): if user == '/' or user == '': user = '/index.html' self.transport=oself.transport mtype=lower(user.split('.')[-1]) if os.path.isfile(basepath+user): self.file=open(basepath+user, 'rb') file_sender = FileSender() #self.transport.write(self.file.read()) oself.sendLine("HTTP/1.1 200 OK") oself.sendLine("Age: 0") oself.sendLine("Content-Length: "+str(os.stat(basepath+user).st_size)+'') if mtypes.has_key(mtype): mtype=mtypes[mtype] else: mtype='application/octet-stream' oself.sendLine("Content-Type: "+mtype) oself.sendLine("Connection: close") oself.sendLine("Server: Deadman\n") cb = file_sender.beginFileTransfer(self.file, self.transport) cb.addCallback(self.file_done) else: h=open(basepath+'/Web.Log','ab') h.write(str(time())+" server: 404 error"+'\r\n') h.close() self.transport.write('404 Error....') self.transport.loseConnection() def file_done(self, data): h=open(basepath+'/Web.Log','ab') h.write(str(time())+" server: file done"+'\r\n') h.close() self.file.close() reactor.listenTCP(8081, FingerFactory(moshez='Happy and well')) h=open(basepath+'/Web.Log','ab') h.write(str(time())+ ' Web Server port is 8081,Web dir on '+basepath+'\r\n') h.close() reactor.run() ############################################### 麻烦帮忙看看我哪个地方错了...谢谢 -- The Deadman Walking......
2004年08月13日 星期五 10:57
HD,您好! 最近,看了下组合数学的一些书,心血来潮,决定把组合数的生成算法,编个程序。可是,自己动手一试,发现原来自己想的算法原来速度非常慢,想了很久,终没有什么好的方法,我现在把问题描述如下: 给定 N 个基本字母(当然为了输入方便0<27) ,把N个字母的任意 M 组合情况列举出来(可以输出在文件中)。 我原来的算法是: 通过递归的方法,每次确定组合数的一个字母的方法。 发现的问题: 但是后来发现,这个算法只能应付 N 比较小的情况,一旦 N 大起来,整个算法就需要执行非常久,不知道大家有没有好的方法! 致 礼! 王君 bearhand at tom.com 2004-08-13
2004年08月13日 星期五 11:01
王君,您好! 应该没什么好方法 ======= 2004-08-13 10:57:00 您在来信中写道:======= >HD,您好! > 最近,看了下组合数学的一些书,心血来潮,决定把组合数的生成算法,编个程序。可是,自己动手一试,发现原来自己想的算法原来速度非常慢,想了很久,终没有什么好的方法,我现在把问题描述如下: > > 给定 N 个基本字母(当然为了输入方便0<27) ,把N个字母的任意 M 组合情况列举出来(可以输出在文件中)。 > >我原来的算法是: > > 通过递归的方法,每次确定组合数的一个字母的方法。 > >发现的问题: > 但是后来发现,这个算法只能应付 N 比较小的情况,一旦 N 大起来,整个算法就需要执行非常久,不知道大家有没有好的方法! > > 致 >礼! > > > 王君 > bearhand at tom.com > 2004-08-13 > > > >_______________________________________________ >python-chinese list >python-chinese at lists.python.cn >http://python.cn/mailman/listinfo/python-chinese = = = = = = = = = = = = = = = = = = = = 致 礼! guochen guochen at 1218.com.cn 2004-08-13
Zeuux © 2025
京ICP备05028076号