新建From1(窗体),新建Text1(TextBox),新建Command1(按钮CommandButton),Winsock1(按钮Winsock控件),代码:
通过windows的命令行代码:
nslookup manongku.com 127.0.0.1
命令行运行结果:
DNS request timed out.
timeout was 2 seconds.
服务器: UnKnown
Address: 127.0.0.1
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
*** 请求 UnKnown 超时
在VB的Text1中,运行结果:
[1] 1_500500
[2] 2_500500
[3] 3_500500
[4] 4_500500
[5] 5_500500
结论:
现在说下nslookup干了什么事?通过对服务器IP的抓包,看到nslookup有5次dns请求,分别是:
PTR
A
AAAA
A
AAAA
所以刚好对应上面UnKnown和4次timed out。如果我们通过测试baidu.com:
nslookup baidu.com 8.8.8.8
运行结果:
PTR
A
AAAA
毕竟google的dns直接能给出A记录就不用重复了。
我们用dig测试,抓包发现是访问3次A记录,这和Text1收到的3次记录一样,没遗漏。dig测试baidu.com只出现一次A记录。
在高强度测试中,比如1秒100个访问,还是看到[]中的数字和_前面的数字都是一样的,有DoEvents也不影响,证明没有数据插队进来。winsock控件外部是不会遗漏请求的,会挨个发到VB的Winsock控件中。