2004年08月02日 星期一 10:02
Hollo Zhiyuan.Ma: 发布到Wiki 中了? 没有看到是也乎………… /******** [2004-08-02]10:02:29 ; Zhiyuan.Ma wrote: Zhiyuan.Ma> python-chinese,您好! Zhiyuan.Ma> "编写TCP客户端"和"运用进程"我已经翻完了,不过忘在家里了.晚上上载 Zhiyuan.Ma> 今天打算翻"UDP网络" Zhiyuan.Ma> 以前没有翻过东西,还请大家多多指正. Zhiyuan.Ma> 另外麻烦Zoomq看看是不是wiki格式我写的不对,怎么实例代码看起来和前面的很不同. Zhiyuan.Ma> 致 Zhiyuan.Ma> 礼! Zhiyuan.Ma> Jerry Marx Zhiyuan.Ma> zhiyuan.ma at enorbus.com.cn Zhiyuan.Ma> 2004-08-02 ********************************************/ -- Free as in Freedom Zoom.Quiet #=========================================# ]Time is unimportant, only life important![ #=========================================# sender is the Bat!2.12.00
2004年08月02日 星期一 10:18
Zoom.Quiet,您好! 哦.我指的是"Reactor基础"和"编写TCP服务器" 示例代码没有行号,颜色也不同.和finger教程相比 ======= 2004-08-02 10:02:43 您在来信中写道:======= >Hollo Zhiyuan.Ma: > > 发布到Wiki 中了? >没有看到是也乎………… > > >/******** [2004-08-02]10:02:29 ; Zhiyuan.Ma wrote: > >Zhiyuan.Ma> python-chinese,您好! > >Zhiyuan.Ma> "编写TCP客户端"和"运用进程"我已经翻完了,不过忘在家里了.晚上上载 >Zhiyuan.Ma> 今天打算翻"UDP网络" >Zhiyuan.Ma> 以前没有翻过东西,还请大家多多指正. > >Zhiyuan.Ma> 另外麻烦Zoomq看看是不是wiki格式我写的不对,怎么实例代码看起来和前面的很不同. > >Zhiyuan.Ma> 致 >Zhiyuan.Ma> 礼! > > >Zhiyuan.Ma> Jerry Marx >Zhiyuan.Ma> zhiyuan.ma at enorbus.com.cn >Zhiyuan.Ma> 2004-08-02 > > >********************************************/ > >-- >Free as in Freedom > > Zoom.Quiet > >#=========================================# >]Time is unimportant, only life important![ >#=========================================# > >sender is the Bat!2.12.00 > >_______________________________________________ >python-chinese list >python-chinese at lists.python.cn >http://python.cn/mailman/listinfo/python-chinese > = = = = = = = = = = = = = = = = = = = = 致 礼! Jerry Marx zhiyuan.ma at enorbus.com.cn 2004-08-02
2004年08月02日 星期一 10:18
HD,您好! 明明有呀,how-to中都有。再说这也是socket中的一种标准呀。 ======= 2004-08-02 09:24:40 您在来信中写道:======= >不知为什么这位黎达同仁对twisted一直很鄙视,到是听说他以经用python写了很牛的东东呢。 :) >他们的应用一定支持udp,我们慢慢挖twisted罢,如果不成我们给twisted加上udp功能好不好? ^_^ > >On Mon, 2 Aug 2004 09:10:46 +0800, limodou <chatme at 263.net> wrote: >> 黎达?ldw,您好! >> >> 怎么可能没有。 >> > >-- >HD(燃烧中的火) >我工作我快乐,我勤奋我收获。请与我一起快乐,与我一起收获。 >_______________________________________________ >python-chinese list >python-chinese at lists.python.cn >http://python.cn/mailman/listinfo/python-chinese > = = = = = = = = = = = = = = = = = = = = 致 礼! limodou chatme at 263.net 2004-08-02
2004年08月02日 星期一 10:18
info,您好!
api也是python源代码呀。我的意思是我们把该做的都做了,别人只是一个简单的调用罢了。
======= 2004-08-02 09:55:01 您在来信中写道:=======
>limodou,您好!
>
> 直接提供python的代码不是好些吗?我们是在做开源的项目啊。如果别人有兴趣可以用其他语言按照协议来重些不就行了吗?
>
>======= 2004-08-02 09:10:14 您在来信中写道:=======
>
>>info,您好!
>>
>> 我想对于客户端我们首先要提供的是一个可用的API包。那么这个API包可能就有线程的内容。我们不仅要考虑稳定,还要考虑可扩展性。我们不能排除客户端的多线程访问,也许API不提供,那么客户端可能就会自已来实现了,既然如此,还不如由我们来提供为好。
>>
>>======= 2004-08-02 08:52:45 您在来信中写道:=======
>>
>>>limodou,您好!
>>>
>>> 用twisted写的服务器端本身就处理的多线程,这个大家可以用我们做测试的例子来试。
>>> 对于客户端来讲,除非是传输文件本身,没有必要采用多线程。
>>> 我的意见是,达到本期的产品基线,然后用最稳定、最简洁的方式来实现。
>>>
>>>======= 2004-08-01 16:50:58 您在来信中写道:=======
>>>
>>>>hoxide,您好!
>>>>
>>>> 的确,整个程序只有一个线程,那么这种异步都通过twisted来完成,的确象queue这种阻塞方式就无法实现了。多线程,多点测试才更符合实际。
>>>>
>>>>
>>>>======= 2004-08-01 15:28:13 您在来信中写道:=======
>>>>
>>>>>limodou,您好!
>>>>>
>>>>> 开始我们也尝试过用queue的阻塞处理,但这样就阻塞了主线程,连recive都不行.
>>>>>这个问题的根本解决方案还是用线程,我只是提供一种类似的东西("轻便线程"http://www-900.ibm.com/developerWorks/cn/linux/sdk/python/)
>>>>>另外我觉得应该建一个多连接的测试程序,而不只是一个连接多请求的测试程序.
>>>>>而窗口应该放在服务端比较好一点
>>>>>
>>>>>======= 2004-08-01 14:54:55 您在来信中写道:=======
>>>>>
>>>>>>hoxide,您好!
>>>>>>
>>>>>> 其实真正的数据发送是由客户端做的,我们可以把连接、发送数据等进行封装由客户端来调用。这样由客户端去组织数据,而我们的协议处理只是一个被调用方就行了。因为这只是一个测试程序,还不是真正的应用,因此可能就不讲究了。真正做成客户端,可能程序都要改了。既然我们不想发送太快,queue完全可以采用阻塞方式来处理。
>>>>>>
>>>>>>======= 2004-08-01 14:31:17 您在来信中写道:=======
>>>>>>
>>>>>>>limodou,您好!
>>>>>>>
>>>>>>> 这点我直到但是程序还是依赖一个全局变量,对于复杂的情况,这种用法是不好的,首先明显得会带来名字空间的污染,其次如果程序执行的上下文关系复杂,那么也就不是几个全局变量能轻松解决的.
>>>>>>>
>>>>>>>
>>>>>>>======= 2004-08-01 14:07:21 您在来信中写道:=======
>>>>>>>
>>>>>>>>hoxide,您好!
>>>>>>>>
>>>>>>>> 其实不丢message也可以,这样不用使用生成器。只要把message生成放到else中就行了。因为那时是可以发送数据的。之所以丢是因为先生成了message,然后才判断是否可以发送,如果不能发送自然就丢了。如果改到可以发送才生成message就不会丢了。
>>>>>>>>
>>>>>>>> while nownum < count:
>>>>>>>> if self.factory.sendQueue.full():
>>>>>>>> self.call = reactor.callLater(0, self.testserver)
>>>>>>>> return
>>>>>>>> else:
>>>>>>>> message = usspmsg.USSPMessage() #*
>>>>>>>> message.setMsgName('mail_counter') #*
>>>>>>>> message.body.setField('uid',str(nownum)) #* 这几行移下来了
>>>>>>>> self.factory.sendQueue.put_nowait(message)
>>>>>>>> nownum += 1
>>>>>>>>
>>>>>>>>======= 2004-08-01 12:19:47 您在来信中写道:=======
>>>>>>>>
>>>>>>>>>HD,您好!
>>>>>>>>>
>>>>>>>>>大家最好先了解一下生成器的有关知识:IBM上的《可爱的 Python:迭代器和简单生成器》: http://www-900.ibm.com/developerWorks/cn/linux/sdk/python/charm-20/index.shtml
>>>>>>>>>
>>>>>>>>>昨天给的代码还有点错误,修改的代码(其实只改了打星号的地方):
>>>>>>>>>
>>>>>>>>> def testserver(self):
>>>>>>>>> """向服务器发的测试报文"""
>>>>>>>>> try:
>>>>>>>>> self.pp.next()
>>>>>>>>> self.call = reactor.callLater(0,self.testserver)
>>>>>>>>> return
>>>>>>>>> except StopIteration:
>>>>>>>>> pass
>>>>>>>>>
>>>>>>>>> def __init__(self):
>>>>>>>>> self.pp=self.sendQQ()
>>>>>>>>> ussp.USSClientQueueProtocol.__init__(self)
>>>>>>>>>
>>>>>>>>> def sendQQ(self):
>>>>>>>>> global nownum
>>>>>>>>> global count
>>>>>>>>> i=1
>>>>>>>>> while i < count:
>>>>>>>>> message = usspmsg.USSPMessage()
>>>>>>>>> message.setMsgName('mail_counter')
>>>>>>>>> message.body.setField('uid',str(i))
>>>>>>>>> while self.factory.sendQueue.full(): #*
>>>>>>>>> yield None #**
>>>>>>>>> self.factory.sendQueue.put_nowait(message)
>>>>>>>>> i += 1
>>>>>>>>> nownum=i
>>>>>>>>> self.disconnect()
>>>>>>>>>
>>>>>>>>>这里真正的处理是在sendQQ这个函数定义的.self.pp是生成器的实例,由__init__()生成,testserver只是调度完成这个处理的函数,而且是和具体的处理独立的,他只是简单得实现了当处理"暂停"后的重新启动.
>>>>>>>>>
>>>>>>>>>真正神奇的地方是打星号的行.他测试sendQueue确定是否能发出message,如果不能就会执行yield None,这时函数就终止在**这行,直到在有.next()方法调用时再从这句开始执行.
>>>>>>>>>这个好处是原来的处理流程可以很顺利得进行.不需要保存中间变量.注意0731a的testserver能正确得发出所有message,是因为恰巧有全局变量nownum完全确定处理的执行状态了.但事事上一般的处理不会那么简单,有复杂的状态组合(上面的代码并没用nownum,而是用了循环变量i,注意他不是全局的!!!!!).正像zoomq昨天说的0731a的testserver在queue满的时候前面对message的处理就被抛弃了,但在这个生成器版本,先前对message的处理没有被抛弃.
>>>>>>>>>
>>>>>>>>>个人觉得这个生成器版本还是不够完美,异步传输还是应该以线程为基础进行.下一个版本可能是基于生成器的简单线程:)
>>>>>>>>>
>>>>>>>>>说得不是很明白,我不清楚大家对什么地方有疑问.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>===== 2004-08-01 00:33:08 您在来信中写道:=======
>>>>>>>>>
>>>>>>>>>>细说说,为什么说是生成器版的呢?
>>>>>>>>>>
>>>>>>>>>>On Sat, 31 Jul 2004 23:22:53 +0800, hoxide <hoxide_dirac at yahoo.com.cn> wrote:
>>>>>>>>>>> python-chinese,您好!
>>>>>>>>>>>
>>>>>>>>>>> 为什么要用生成器,现在的testserver的执行流程只依赖于nownum,而事实上通常的服务要依赖于整个运行流程.另外这样的写法可将窗口部分的代码抽出.
>>>>>>>>>>>
>>>>>>>>>>> 致
>>>>>>>>>>> 礼!
>>>>>>>>>>>
>>>>>>>>>>> hoxide
>>>>>>>>>>> hoxide_dirac at yahoo.com.cn
>>>>>>>>>>> 2004-07-31
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>--
>>>>>>>>>>HD(燃烧中的火)
>>>>>>>>>>我工作我快乐,我勤奋我收获。请与我一起快乐,与我一起收获。
>>>>>>>>>>_______________________________________________
>>>>>>>>>>python-chinese list
>>>>>>>>>>python-chinese at lists.python.cn
>>>>>>>>>>http://python.cn/mailman/listinfo/python-chinese
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>= = = = = = = = = = = = = = = = = = = =
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 致
>>>>>>>>>礼!
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> hoxide
>>>>>>>>> hoxide_dirac at yahoo.com.cn
>>>>>>>>> 2004-08-01
>>>>>>>>>
>>>>>>>>>_______________________________________________
>>>>>>>>>python-chinese list
>>>>>>>>>python-chinese at lists.python.cn
>>>>>>>>>http://python.cn/mailman/listinfo/python-chinese
>>>>>>>>>
>>>>>>>>
>>>>>>>>= = = = = = = = = = = = = = = = = = = =
>>>>>>>>
>>>>>>>>
>>>>>>>> 致
>>>>>>>>礼!
>>>>>>>>
>>>>>>>>
>>>>>>>> limodou
>>>>>>>> chatme at 263.net
>>>>>>>> 2004-08-01
>>>>>>>>
>>>>>>>>_______________________________________________
>>>>>>>>python-chinese list
>>>>>>>>python-chinese at lists.python.cn
>>>>>>>>http://python.cn/mailman/listinfo/python-chinese
>>>>>>>>
>>>>>>>
>>>>>>>= = = = = = = = = = = = = = = = = = = =
>>>>>>>
>>>>>>>
>>>>>>> 致
>>>>>>>礼!
>>>>>>>
>>>>>>>
>>>>>>> hoxide
>>>>>>> hoxide_dirac at yahoo.com.cn
>>>>>>> 2004-08-01
>>>>>>>
>>>>>>>_______________________________________________
>>>>>>>python-chinese list
>>>>>>>python-chinese at lists.python.cn
>>>>>>>http://python.cn/mailman/listinfo/python-chinese
>>>>>>>
>>>>>>
>>>>>>= = = = = = = = = = = = = = = = = = = =
>>>>>>
>>>>>>
>>>>>> 致
>>>>>>礼!
>>>>>>
>>>>>>
>>>>>> limodou
>>>>>> chatme at 263.net
>>>>>> 2004-08-01
>>>>>>
>>>>>>_______________________________________________
>>>>>>python-chinese list
>>>>>>python-chinese at lists.python.cn
>>>>>>http://python.cn/mailman/listinfo/python-chinese
>>>>>>
>>>>>
>>>>>= = = = = = = = = = = = = = = = = = = =
>>>>>
>>>>>
>>>>> 致
>>>>>礼!
>>>>>
>>>>>
>>>>> hoxide
>>>>> hoxide_dirac at yahoo.com.cn
>>>>> 2004-08-01
>>>>>
>>>>>_______________________________________________
>>>>>python-chinese list
>>>>>python-chinese at lists.python.cn
>>>>>http://python.cn/mailman/listinfo/python-chinese
>>>>>
>>>>
>>>>= = = = = = = = = = = = = = = = = = = =
>>>>
>>>>
>>>> 致
>>>>礼!
>>>>
>>>>
>>>> limodou
>>>> chatme at 263.net
>>>> 2004-08-01
>>>>
>>>>_______________________________________________
>>>>python-chinese list
>>>>python-chinese at lists.python.cn
>>>>http://python.cn/mailman/listinfo/python-chinese
>>>>
>>>
>>>= = = = = = = = = = = = = = = = = = = =
>>>
>>>
>>> 致
>>>礼!
>>>
>>>
>>> info
>>> info at xichen.com
>>> 2004-08-02
>>>
>>>_______________________________________________
>>>python-chinese list
>>>python-chinese at lists.python.cn
>>>http://python.cn/mailman/listinfo/python-chinese
>>>
>>
>>= = = = = = = = = = = = = = = = = = = =
>>
>>
>> 致
>>礼!
>>
>>
>> limodou
>> chatme at 263.net
>> 2004-08-02
>>
>>_______________________________________________
>>python-chinese list
>>python-chinese at lists.python.cn
>>http://python.cn/mailman/listinfo/python-chinese
>>
>
>= = = = = = = = = = = = = = = = = = = =
>
>
> 致
>礼!
>
>
> info
> info at xichen.com
> 2004-08-02
>
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>
= = = = = = = = = = = = = = = = = = = =
致
礼!
limodou
chatme at 263.net
2004-08-02
Zeuux © 2025
京ICP备05028076号