我一直在开发一个网络嗅探应用程序,目前我正试图使其可远程运行。我使用twisted作为它的网络部分。本质上,我向嗅探器发送一个数据包,告诉它开始,然后在它应该停止时发送一个不同的数据包。
我遇到的问题是twisted的reactor.run()和send的sniff()函数都阻塞了,所以似乎不可能同时嗅探和发送嗅探到的数据。有什么既定的方法可以做到这一点吗?
发布于 2014-07-23 00:02:03
是。您可能需要多线程管理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()..although我不熟悉scapy,也不知道这个接口是如何实际使用的。
https://stackoverflow.com/questions/24888546
复制相似问题