Python 2.7简单的数据包嗅探器
问题描述:
我在Python中编写了简单的数据包嗅探器。我需要不停地接收数据包,并每隔10秒发送一个数据包。我试过这个:Python 2.7简单的数据包嗅探器
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()返回的浮点值e.g:1440185304.78
这是非常准确的,准确的时刻,你应该永远不要假设你能找到确切的浮动+10回来。
使用更大/更小的语句是在这种情况下更好,因为当你的循环运行无论是在它,例如精确值可能已经过去了:
t = time.time()
while True:
while time.time() < t + 10:
time.sleep(0.1)
t = time.time()
print ("hi")
你用'的意思做的,但它不”工作好吗?它与你期望的有什么不同?你必须更具体。 – That1Guy
看起来不像我的嗅探器......根据定义,嗅探器会读取* others *的数据包。首先没有指向它的数据包。 – Bakuriu