-2
我有3個設備。設備A與設備C通信。設備B嗅探連接。我的代碼工作正常,但我不明白爲什麼在decoder
對象保持嗅探線程退出後的連接(即當control
是True
)。實例不會死
解碼器類進行解碼裝置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)
什麼是'self.parent.object.loop()'?它不循環嗎? – NPE
@NPE它只是一個pcapy功能來接收數據包。問題不在於此。如果我評論上面代碼的最後兩行,則線程退出。 – gspt
你真的沒有顯示出足夠的代碼調試此。是'handle_packets'過得去到'self.parent.object.loop'單個呼叫一再呼籲?在哪裏以及如何將'control'設置爲非錯誤的內容? 'Decoder.decode'究竟做了什麼?它可以阻止嗎? – Blckknght