论坛最正确的 ICMP 延迟测试写法,为什么这么说呢,论坛几乎所有的前辈们,包括百度能搜到的易语言 ICMP 源码的写法都是把数据类型 ICMP_ECHO_REPLY32 的最后一个成员 ptrData 的数组下标设置为了256,导致 IcmpSendEcho 无法对目的地址发送大于256字节的数据。
我的做法是把成员 ptrData 的数组下标设置为了65500,因为我发现设置为了256或更小时,在子程序里面重定义了该类型的数组变量下标为更大值,GlobalSize 返回的内存块大小也没有改变,所以只好在声明数据类型时就把数组设置为最大值(65500字节为ICMP能发送的最大值).
在这里吐槽下易语言系统核心支持库里面的 通信测试 () 命令无法修改发送数据大小,会有很多不灵活的地方,比如用 通信测试 () 命令来测试 114.114.114.114,你会发现114压根不会返回。原因是114对小于12字节的icmp数据是不响应或被其防火墙拦截了.
以上源码使用了一个DNS查询的源码忘记是论坛谁写了,请该模块作者不要介意.