由于实验原因需要查询各地的dns时延,所以我参考了网上的各类代码,写了一个dns时延检测的脚本,希望朋友们指导。
-*- coding:utf-8 -*-
from timeit import timeit
import time
import socket
global msg
def send():
q = msg
sock_recv = 0
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.sendto(q, ('8.8.8.8', 53))
sock_recv = sock.recv(4096)
while sock_recv != 0:
break
for num in range(10):
msg = b'\x5c\x6d\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03www\x05baidu\x03com\x00\x00\x01\x00\x01'
#msg = b'\x5c\x6d\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x03www\x02qq\x03com\x00\x00\x01\x00\x01'
t = timeit('send()', 'from __main__ import send', number=1)
print t
使用了python中的socket库,这个库中可以实现发包的功能,这里面我们是将包发送的谷歌的dns服务器8.8.8.8的53端口,然后通过一个计时器函数来判断这个函数是否结束,即是否收到了返回的包,来计算dns时延,这种检测方法,要比通过wiresha