python2.7简单包sni

2024-04-23 10:11:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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()

但效果不好。有人有更好的主意吗?在


Tags: streamtimeconnectmsgsleepsocketcurrent数据包
1条回答
网友
1楼 · 发布于 2024-04-23 10:11:06

您的时间处理不好,请使用以下方法:

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

你的代码不起作用是因为:

“当前”永远不能等于自身+10。在

还要注意时间。时间()返回浮点值,例如:1440185304.78

这是非常精确的时刻,你不应该假设你可以找到确切的浮动+10回来。在

在这种情况下,使用更大/更小的语句更好,因为在循环中运行任何内容时,可能会传递确切的值,例如:

^{pr2}$

相关问题 更多 >