Python 2.7简单的数据包嗅探器

时间:2015-08-21 16:39:13

标签: python sniffer

我在Python中编写了简单的数据包嗅探器。我需要不间断地接收数据包并每10秒发送一个数据包。我试过这个:

current = time.time()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("xx.xx.xx.xx",xxxx))

time.sleep(0.5)

while True:
    msg = str(s.recv(4096))
    time.sleep(0.010)
    print msg
    if current==current+10:
        s.send("<myPacket/>")
    current = time.time()

但它并没有奏效。谁有更好的主意?

1 个答案:

答案 0 :(得分:1)

你的时间处理不好,请改用:

While True:
    ...
    time.sleep(10)

您的代码不起作用,因为:

'当前'永远不能等于自己+10。

另请注意,time.time()返回一个浮点值,例如:1440185304.78

这对于那个确切的时刻非常准确,你永远不应该假设你可以找到精确的浮点数+10。

在这种情况下,使用更大/更小的语句会更好,因为当你的循环运行时,确切的值可能已经过去了,例如:

t = time.time()
while True:
    while time.time() < t + 10:
        time.sleep(0.1)
    t = time.time()
    print ("hi")