2015-05-10 21 views
1

我有一个简单的网络服务器建立与Scapy的,等待回复,像这样:发送一个新的数据包,而无需等待前一个数据包回复

connreq = sniff(filter=connfilter, prn=handshake) 

在功能握手握手进行,但我有一定的问题,这里是:

answer = sr1(ip/synack, timeout = 4) 

一个SYNACK是发送和答案等待,如果没有答案是4秒,然后握手将被终止内收到。但是,出于某种原因,如果我有多个客户端,我的功能握手将一次只执行一次,因为scapy 等待先前客户端的答案。

我不希望scapy sniff函数等待,我希望它在任何情况下都能处理数据包,即使前一个数据包尚未处理完毕。

我熟悉线程化函数,但我该如何将它应用于scapy? (或嗅探功能?)

+0

你的意思是你不想要嗅探功能等待Web服务器端? –

+0

@ m170897017是的,我希望它能够同时处理多个客户端,而不是等待最后一个客户端“完成” –

回答

1

1. 您可以试试timeout参数sniff函数。我记得有这样的参数。

connreq = sniff(filter=connfilter, prn=handshake, timeout=4) 

2. 如果方法1不起作用,你将不得不使用多进程处理这个问题。

在服务器端,

import threading 
def your_sniff_function(): 
    connreq = sniff(filter=connfilter, prn=handshake) 
    # save sniff result to local file here 

t = threading.Thread(target=your_sniff_function, args=[]) 
t.start() 
t.join(timeout=4) # use timeout here to force termination 
# you can start as many subthreads as you want here 
相关问题