試圖獲得一個簡單的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