我在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()
但它并没有奏效。谁有更好的主意?
答案 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")