我正在用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返回的字符串吗?在我发帖之前进行的研究似乎表明,其他人没有这个问题,但后来确实遇到了其他问题,因为字符串以不确定的顺序从多个客户端接收。如果我解决了这就是我的方法错了,结果我只会进入下一个问题?在
这是一个扭曲的常见问题解答:Why is ^{} called with only part of the data I called ^{} with? 。在
相关问题 更多 >
编程相关推荐