试图获得一个简单的python扭曲的客户端 - 服务器应用程序工作。目的是用这个来控制一些IRC机器人;像一个主控制台向所有(5个)机器人发出命令。python扭曲的简单的客户端 - 服务器通信
有一天,附加的代码将形成服务器代码。目前,我正在使用telnet来模拟连接到“派对线”的IRC僵尸工具(客户端)。
我卡在的是,我怎么从附加的服务器应用程序sendLine到所有的机器人?每次我创建一个循环来获取raw_input时,我最终都会拖延执行。我想过对连接状态函数进行测试,但似乎无法找到(如果连接是真的,raw_input类逻辑)。
from twisted.internet.protocol import Factory
from twisted.protocols.basic import LineReceiver
from twisted.internet import reactor
class bottalk(LineReceiver):
botlist = []
def lineReceived(self, line):
botlistspot = len(self.botlist)
self.botlist.append(line)
print self.botlist[botlistspot] + " checked in."
class botfactory(Factory):
def buildProtocol(self, addr):
return bottalk()
reactor.listenTCP(8123, botfactory())
reactor.run()
我试过把下面的raw_input放在LineReceiver类的外面。遍及..我希望这个raw_input提示不断地提示输入,而不仅仅是像一个线接收到的事件 - 所有的时间..我想服务器机器人控制台随时准备接受我的输入和sendLine所有的机器人。
sendLine(raw_input("> "))
你能解释一下吗?我对Python和OOP很陌生 - 可能是一个简单的例子吗?我不想让这个问题得到解决,只是一个示范,如果它没有太多的工作。谢谢! :) – user1675884
答案中有一个例子。你能描述一下你想要的更多吗? –
这个问题表明你的问题是'raw_input'阻止了Twisted应用程序的执行。请查看[与答案中提供的示例的链接](http://twistedmatrix.com/documents/current/core/examples/stdiodemo.py)。这是一个简单而直接的演示,演示如何在Twisted中执行非阻塞等价的'raw_input'。如果您的问题是关于其他问题,请随时编辑并澄清! – user4815162342