Python论坛  - 讨论区

标题:[python-chinese]我用twisted架设了一个WebServer,但很多时候要刷新2次才能显示出来,不知道是什么问题?(附程序内容)

2004年08月13日 星期五 10:52

Deadman deadman12 at gmail.com
Fri Aug 13 10:52:51 HKT 2004

################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......


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年08月13日 星期五 10:57

王君 bearhand at tom.com
Fri Aug 13 10:57:42 HKT 2004

HD,您好!
	最近,看了下组合数学的一些书,心血来潮,决定把组合数的生成算法,编个程序。可是,自己动手一试,发现原来自己想的算法原来速度非常慢,想了很久,终没有什么好的方法,我现在把问题描述如下:

	给定 N 个基本字母(当然为了输入方便0<27)	,把N个字母的任意 M 组合情况列举出来(可以输出在文件中)。

我原来的算法是:

	通过递归的方法,每次确定组合数的一个字母的方法。

发现的问题:
	但是后来发现,这个算法只能应付 N 比较小的情况,一旦 N 大起来,整个算法就需要执行非常久,不知道大家有没有好的方法!

        致
礼!
 				

        王君
        bearhand at tom.com
          2004-08-13





[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年08月13日 星期五 11:01

guochen guochen at 1218.com.cn
Fri Aug 13 11:01:01 HKT 2004

王君,您好!

	应该没什么好方法

======= 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





[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号