一次运行两个阻塞功能

时间:2014-07-22 13:20:37

标签: python twisted scapy

我一直致力于网络嗅探应用程序,我目前正在尝试远程运行。我使用twisted作为网络的一部分。本质上,我向嗅探器发送一个数据包,告诉它启动,然后在它应该停止时发送另一个数据包。

我遇到的问题是扭曲的reactor.run()和scapy的sniff()功能块,所以似乎无法嗅探并发送嗅探的数据同时。有没有一些既定的方法呢?

1 个答案:

答案 0 :(得分:0)

是。您可能需要多个线程管理API之一,例如twisted.internet.threads.deferToThread()

http://twistedmatrix.com/documents/current/api/twisted.internet.threads.html#deferToThread

您可以像以下一样使用它:

def runScapy():
    d = reactor.deferToThread(scapy.sniff)
    d.addCallback(doSomethingWithSniffResult)

reactor.callWhenRunning(runScapy)
reactor.run()

..虽然我不熟悉scapy,但我不知道界面是如何实际使用的。