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号