2014-07-22 76 views
-2

我有3個設備。設備A與設備C通信。設備B嗅探連接。我的代碼工作正常,但我不明白爲什麼在decoder對象保持嗅探線程退出後的連接(即當controlTrue)。實例不會死

解碼器類進行解碼裝置A和C之間的數據包,並且不具有任何循環機制(當它被運行作爲一個單一的腳本,它運行一次,然後退出)。

這裏是問題所在的代碼(在設備B上運行)的簡化版本:

class Thread_Class(Flag): 
    def run(self): 
     while(control == False): 
      self.parent.object.loop(0, self.handle_packets) 

    def handle_packets(self, ...): 
     # packet handling code using pcapy library 
     packet = ... 

     self.parent.decoder = Decoder(self) 
     self.parent.decoder.decode(packet) 
+0

什麼是'self.parent.object.loop()'?它不循環嗎? – NPE

+0

@NPE它只是一個pcapy功能來接收數據包。問題不在於此。如果我評論上面代碼的最後兩行,則線程退出。 – gspt

+0

你真的沒有顯示出足夠的代碼調試此。是'handle_packets'過得去到'self.parent.object.loop'單個呼叫一再呼籲?在哪裏以及如何將'control'設置爲非錯誤的內容? 'Decoder.decode'究竟做了什麼?它可以阻止嗎? – Blckknght

回答

0

好的,我解決它...我周圍放置最後兩行的if control == False