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号