[英]Python Twisted: What Is Received with DataReceived and What Should I Probably Use Instead
我正在使用Twisted開發基於Python的基於文本的冒險游戲,我認為我從根本上誤解了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”,則按照DEBUG指令說它收到了test命令,則不會收到任何控制台輸出。 關於原因,我有一些理論,第一個是傳遞的不是字符串,第二個是雖然是字符串,但后面附加了不可見的字符(回車符和換行符)。使輸入的測試失敗-我的測試似乎支持此過程功能,即在新行中在控制台中添加命令的長度。
以下哪項是對的? 或者是別的什么? 在任何情況下,我都應該以這種方式測試從dataReceived返回的字符串嗎? 在我發布之前進行研究似乎表明其他人沒有這個問題,但后來確實遇到了其他問題,因為從多個客戶端以不確定的順序接收字符串。 如果我解決了這個問題,那我的方法是錯誤的,結果我將繼續討論下一個問題嗎?
這是一個扭曲的常見問題解答: 為什么只用我稱為transport.write
部分數據調用dataReceived
? 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.