pythontwisted:DataReceived接收到什么?我应该使用什么替代

2024-09-27 23:18:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python开发一款基于文本的冒险游戏Twisted,我想我已经从根本上误解了Twisted的dataReceived函数会带来什么。我有以下作为我整体代码的一部分

def process(self, data):
    print "Got command {}, {}".format(data, len(data))
    if data == "test":
        print "DEBUG: got the test command"


from twisted.internet import reactor, protocol

class MudLoop(protocol.Protocol):

  def connectionMade(self):
    login(self)

  def dataReceived(self, data):
    process(self, data)


factory = protocol.ServerFactory()
factory.protocol = MudLoop
reactor.listenTCP(12000,factory)
reactor.run()

从dataReceived发回的任何字符串都不会触发进程函数对它的测试并执行其他操作,例如,如果连接的客户端输入“test”,则不会根据调试指令接收到控制台输出,说明它获得了test命令。我有几个理论来解释为什么,第一个是传递的不是一个字符串,第二个是虽然它是一个字符串,但它有不可见的字符(回车和换行?)附加在它后面,使它无法通过对输入的内容的测试-这似乎得到了我对被调用的进程函数的测试的支持,在控制台中添加命令的长度到一个新行上。在

哪一个是真的?还是别的什么?在任何情况下,我应该用这种方式测试从dataReceived返回的字符串吗?在我发帖之前进行的研究似乎表明,其他人没有这个问题,但后来确实遇到了其他问题,因为字符串以不确定的顺序从多个客户端接收。如果我解决了这就是我的方法错了,结果我只会进入下一个问题?在


Tags: 函数字符串testselfdatafactorydeftwisted

热门问题