|
Size: 374
Comment:
|
Size: 4860
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 8: | Line 8: |
| = 文章大标 = ''简述'' == 章标题1 == |
= 目标 = ''生成框架中的uss*和usp*'' |
| Line 12: | Line 11: |
| === 小节标题1 === | * [http://wiki.woodpecker.org.cn/moin.cgi/Otter_2fOtterBase?action=AttachFile&do=get&target=OtterBase-040814 OtterBase-040814下载] --修改扩展为 rar, winrar 3.2以上版本! == benchmarks框架结构 == === uss === ==== message ==== ==== protocols ==== = otter 2.0 = == ussd.py == 我暂时无法收发邮件,所以把对otter 2.0 的服务端流量控制的尝试发到wiki上讨论。 |
| Line 15: | Line 28: |
| Python code | # -*- coding: utf-8 -*- # # # $Id: ussd.py,v 1.8 2004/09/14 12:45:00 hoxide Exp $ """$,1$U现了(BUSS德腄aemon程序 """ from uss.message import usspmsg from uss.protocols import ussp from twisted.internet import reactor, protocol from time import clock import Queue import thread class USSServerProtocol(ussp.USSProtocol): """建立$,1){嘎?(BUSS服务器的协议处理""" """ def __init__(self): ussp.USSProtocol.__init__(self) """ funs={ 'connect': lambda self, m: self.p_ussp_connect(m), 'mail_counter': lambda self, m: self.p_ussp_mail_counter(m), 'terminate': lambda self, m: self.p_ussp_terminate(m) } def connectionMade(self): """建立连接?$,1%#?R舳疾蛔?(B""" print 'connectionMade' self.funs=USSServerProtocol.funs def on_ussp_connect(self, message): getqueue.put((self, 'connect', message)) def on_ussp_mail_counter(self, message): getqueue.put((self, 'mail_counter', message)) def on_ussp_terminate(self, message): getqueue.put((self, 'terminate', message)) def p_ussp_connect(self, message): """处理?$,1&[Щ?(Bconnect报文""" smessage = usspmsg.USSPMessage() smessage.head.sequence = message.head.sequence smessage.setMsgName('connect_resp') smessage.body.setField('status',1) smessage.body.setField('version',1) self.sendData(smessage.packed()) def p_ussp_mail_counter(self, message): """处理?$,1&[Щ⒗吹?(Bmail_counter报文""" smessage = usspmsg.USSPMessage() smessage.head.sequence = message.head.sequence smessage.setMsgName('mail_counter_resp') smessage.body.setField('uid',message.body.fields['uid']) smessage.body.setField('number',2028) self.sendData(smessage.packed()) def p_ussp_terminate(self, message): """处理?$,1&[Щ?(Bterminate报文""" smessage = usspmsg.USSPMessage() smessage.head.sequence = message.head.sequence smessage.setMsgName('terminate_resp') self.sendData(smessage.packed()) # 完事了!!!?$,1'?>的连接 self.transport.loseConnection() class USSServerFactory(protocol.ServerFactory): """USS服务器工厂""" protocol = USSServerProtocol import time def processData(queue): while 1: """ if queue.empty(): print 'sleep 1 sec' time.sleep(1) continue """ #print 'to get' m = queue.get(block=True) #print 'get' m[0].funs[m[1]](m[0], m[2]) getqueue = Queue.Queue(100) #thread.start_new(processData, (getqueue,)) reactor.callInThread(processData, getqueue) def main(): f = USSServerFactory() reactor.listenTCP(7890, f) reactor.run() if __name__ == "__main__": main() |
| Line 18: | Line 126: |
| ==== 次节标题1 ==== xxx |
有点乱码,和我emacs的设置问题有关。 |
| Line 21: | Line 128: |
| == 章标题2 == | == 测试 == |
| Line 23: | Line 130: |
| === 小节标题2 === | 客户端的WINMAX设到1000000,就几乎等于客户端没开窗口。 |
| Line 25: | Line 133: |
| 其它 代码引用 |
H:\OpenGNS\BENCHM~1>ussc.py Connect successfully Connection lost 测试数据: 4095 搪 收到 4095 搪 最后收德絬id为B?094 勇檬保潞2.14 寐 每秒:1917.559960搪 H:\OpenGNS\BENCHM~1>ussc.py Connect successfully Connection lost 测试数据: 4095 搪 收到 4095 搪 最后收德絬id为B?094 勇檬保潞2.54 寐 每秒:1611.171839搪 H:\OpenGNS\BENCHM~1>ussc.py Connect successfully Connection lost 测试数据: 8191 搪 收到 8191 搪 最后收德絬id为B?190 勇檬保潞5.05 寐 每秒:1621.519510搪 H:\OpenGNS\BENCHM~1>ussc.py Connect successfully Connection lost 测试数据: 16383 搪 收到 16383 搪 最后收德絬id为B?6382 勇檬保潞13.89 寐 每秒:1179.812285搪 |
| Line 29: | Line 171: |
| ==== 次节标题2 ==== yyy |
这个只是曲起点,我测了一下0xfff的情况,只有40多条每秒, 要考虑其他办法,比如服务器和发送者之间流量控制的配合 程序使用了线程。具体参见twisted的[http://wiki.woodpecker.org.cn/moin.cgi/PyTwisted_2fLowLevelNetworkingEventLoop_2fLLNEL9] |
Otter 目标代码框架!
-- Zoom.Quiet [DateTime(2004-08-15T22:40:43Z)] TableOfContents
目标
生成框架中的uss*和usp*
[http://wiki.woodpecker.org.cn/moin.cgi/Otter_2fOtterBase?action=AttachFile&do=get&target=OtterBase-040814 OtterBase-040814下载] --修改扩展为 rar, winrar 3.2以上版本!
benchmarks框架结构
uss
message
protocols
otter 2.0
ussd.py
- 我暂时无法收发邮件,所以把对otter 2.0 的服务端流量控制的尝试发到wiki上讨论。
1 # -*- coding: utf-8 -*-
2 #
3 #
4 # $Id: ussd.py,v 1.8 2004/09/14 12:45:00 hoxide Exp $
5 """$,1$U现了(BUSS德腄aemon程序
6 """
7
8 from uss.message import usspmsg
9 from uss.protocols import ussp
10 from twisted.internet import reactor, protocol
11 from time import clock
12
13 import Queue
14 import thread
15
16 class USSServerProtocol(ussp.USSProtocol):
17 """建立$,1){嘎?(BUSS服务器的协议处理"""
18 """
19 def __init__(self):
20 ussp.USSProtocol.__init__(self)
21 """
22 funs={
23 'connect': lambda self, m: self.p_ussp_connect(m),
24 'mail_counter': lambda self, m: self.p_ussp_mail_counter(m),
25 'terminate': lambda self, m: self.p_ussp_terminate(m)
26 }
27 def connectionMade(self):
28 """建立连接?$,1%#?R舳疾蛔?(B"""
29 print 'connectionMade'
30 self.funs=USSServerProtocol.funs
31 def on_ussp_connect(self, message):
32 getqueue.put((self, 'connect', message))
33 def on_ussp_mail_counter(self, message):
34 getqueue.put((self, 'mail_counter', message))
35 def on_ussp_terminate(self, message):
36 getqueue.put((self, 'terminate', message))
37
38 def p_ussp_connect(self, message):
39 """处理?$,1&[Щ?(Bconnect报文"""
40 smessage = usspmsg.USSPMessage()
41 smessage.head.sequence = message.head.sequence
42 smessage.setMsgName('connect_resp')
43 smessage.body.setField('status',1)
44 smessage.body.setField('version',1)
45 self.sendData(smessage.packed())
46
47 def p_ussp_mail_counter(self, message):
48 """处理?$,1&[Щ⒗吹?(Bmail_counter报文"""
49 smessage = usspmsg.USSPMessage()
50 smessage.head.sequence = message.head.sequence
51 smessage.setMsgName('mail_counter_resp')
52 smessage.body.setField('uid',message.body.fields['uid'])
53 smessage.body.setField('number',2028)
54 self.sendData(smessage.packed())
55
56 def p_ussp_terminate(self, message):
57 """处理?$,1&[Щ?(Bterminate报文"""
58 smessage = usspmsg.USSPMessage()
59 smessage.head.sequence = message.head.sequence
60 smessage.setMsgName('terminate_resp')
61 self.sendData(smessage.packed())
62 # 完事了!!!?$,1'?>的连接
63 self.transport.loseConnection()
64
65 class USSServerFactory(protocol.ServerFactory):
66 """USS服务器工厂"""
67 protocol = USSServerProtocol
68
69 import time
70 def processData(queue):
71 while 1:
72 """
73 if queue.empty():
74 print 'sleep 1 sec'
75 time.sleep(1)
76 continue
77 """
78 #print 'to get'
79 m = queue.get(block=True)
80 #print 'get'
81 m[0].funs[m[1]](m[0], m[2])
82
83 getqueue = Queue.Queue(100)
84
85 #thread.start_new(processData, (getqueue,))
86 reactor.callInThread(processData, getqueue)
87
88 def main():
89 f = USSServerFactory()
90 reactor.listenTCP(7890, f)
91 reactor.run()
92
93 if __name__ == "__main__":
94 main()
95
有点乱码,和我emacs的设置问题有关。
测试
客户端的WINMAX设到1000000,就几乎等于客户端没开窗口。
H:\OpenGNS\BENCHM~1>ussc.py Connect successfully Connection lost 测试数据: 4095 搪 收到 4095 搪 最后收德絬id为B?094 勇檬保潞2.14 寐 每秒:1917.559960搪 H:\OpenGNS\BENCHM~1>ussc.py Connect successfully Connection lost 测试数据: 4095 搪 收到 4095 搪 最后收德絬id为B?094 勇檬保潞2.54 寐 每秒:1611.171839搪 H:\OpenGNS\BENCHM~1>ussc.py Connect successfully Connection lost 测试数据: 8191 搪 收到 8191 搪 最后收德絬id为B?190 勇檬保潞5.05 寐 每秒:1621.519510搪 H:\OpenGNS\BENCHM~1>ussc.py Connect successfully Connection lost 测试数据: 16383 搪 收到 16383 搪 最后收德絬id为B?6382 勇檬保潞13.89 寐 每秒:1179.812285搪
这个只是曲起点,我测了一下0xfff的情况,只有40多条每秒, 要考虑其他办法,比如服务器和发送者之间流量控制的配合
程序使用了线程。具体参见twisted的[http://wiki.woodpecker.org.cn/moin.cgi/PyTwisted_2fLowLevelNetworkingEventLoop_2fLLNEL9]
