簡體   English   中英

扭曲的Python:接收到的數據與接收到的數據以及我可能應該使用的數據相反

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM