python twisted transport.write从不发送数据
问题描述:
我有一个基于Twisted示例聊天服务器松散的服务器。它与telnet一起工作。现在我想要一个客户端连接到它。我复制了一次性样本客户端。问题是服务器从来没有收到应该启动“对话”的“hello”字符串。我在FAQ中读到,一个常见的错误是阻止反应堆运行,但我无法看到我在下面的代码中可以做到这一点。谁能告诉我什么是错的?python twisted transport.write从不发送数据
from twisted.internet import reactor
from twisted.internet.protocol import Factory, Protocol
from twisted.internet.endpoints import TCP4ClientEndpoint
class Greeter(Protocol):
def sendMessage(self, msg):
self.transport.write("%s\n" % msg)
class GreeterFactory(Factory):
def buildProtocol(self, addr):
return Greeter()
def gotProtocol(p):
p.sendMessage("hello")
reactor.callLater(1, p.sendMessage, "/p2")
reactor.callLater(2, p.transport.loseConnection)
point = TCP4ClientEndpoint(reactor, "localhost", 8123)
d = point.connect(GreeterFactory())
d.addCallback(gotProtocol)
reactor.run()
答
好的。我希望这可以帮助别人。我上面的问题是我的服务器(使用lineReceived):
def lineReceived(self, line):
print "line received: %s" % line
if self.state == "GETNAME":
self.handle_GETNAME(line)
else:
self.handle_CHAT(line)
预计回车和换行。因此,通过改变上述我的sendMessage:
def sendMessage(self, msg):
self.transport.write("%s\r\n" % msg)
现在它工作神奇!非常简单。
你可以发布你的服务器实现吗? – sberry 2013-02-18 04:32:37