免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2662 | 回复: 3
打印 上一主题 下一主题

关于twisted的问题.. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-24 17:18 |只看该作者 |倒序浏览
最近在学习twisted, 碰到几个问题请大家帮忙看看.

一个简单的客户端
#!/usr/bin/env python
#coding: utf-8

from twisted.internet import reactor, protocol
from twisted.protocols.basic import LineReceiver

class sendmsgProtocol(LineReceiver):
    def connectionMade(self):
        print "sending %s" % str(self.factory.id)
        self.transport.write(str(self.factory.id)+'\r\n')

    def lineReceived(self,data):
        print "received ",data
        self.transport.loseConnection()

class sendmsgFactory(protocol.ClientFactory):
    protocol = sendmsgProtocol
    def __init__(self,id):
        self.id=id

if __name__ == '__main__':
        reactor.connectTCP("localhost",8000,sendmsgFactory(1))
        reactor.run()

运行以后服务器端可以收到消息,并返回值, 客户端也能收到返回值, 但是运行以后程序不退出, 卡住了, 必须用ctrl-c才能退出,
这是怎么回事啊, 我想让客户端收到消息, 断开连接后脚本就退出, 请多多帮忙.

论坛徽章:
0
2 [报告]
发表于 2010-06-24 18:39 |只看该作者
调用了 reactor.stop ()才会停止。

论坛徽章:
0
3 [报告]
发表于 2010-06-25 09:12 |只看该作者
我尝试过, 在脚本后面加了
time.sleep(5)
reactor.stop()
这样会出异常,
2010-06-24 22:56:19+0800 [-] Traceback (most recent call last):
2010-06-24 22:56:19+0800 [-] File "client.py", line 68, in <module>
2010-06-24 22:56:19+0800 [-] reactor.stop()
2010-06-24 22:56:19+0800 [-] File "/usr/local/python2.6.2/lib/python2.6/site-packages/Twisted-10.0.0-py2.6-linux-i686.egg/tw
isted/internet/base.py", line 552, in stop
2010-06-24 22:56:19+0800 [-] "Can't stop reactor that isn't running.")
2010-06-24 22:56:19+0800 [-] twisted.internet.error.ReactorNotRunning: Can't stop reactor that isn't running.

说明这时reactor已经停止了,  甚至在后面加sys.exit(0)也一样, 必须按ctrl-c才能退出.

论坛徽章:
0
4 [报告]
发表于 2010-06-25 09:44 |只看该作者
本帖最后由 luffy.deng 于 2010-06-25 09:48 编辑

回复 3# kwoarang

不是这么用的。异步的  你得在某个事件的callback里调用 reactor.stop()。当事件发生是就会退出。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP