[英]Python 2.7 simple packet 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()
但是效果不好。 有人有更好的主意吗?
您的时间处理不好,请改用以下方法:
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")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.