终于完全解决多线程环境Ping发生干扰的问题
其实问题很简单,每个ping 都是使用SequenceId来区分的,很多时候,如果不设定SequenceId,则程序会自行分配一个,
但在多线程环境中,会将第一次分配的SequenceId重复的分给每一个线程,导致每个线程都收到不属于自己的回应包,造成干扰。
在自行加上SequenceId后,线程就能识别属于自己的回应包了。
该解决办法在delphi7+indy10 环境中得到验证,其他环境暂未测试,但根据ICMP协议的规定,
请求应答的SequenceId必须是一致的,因此加上SequenceId,多线程环境下的Ping就不会出现干扰的情况,
除非都使用了同一个SequenceId,不过如果采取随机生成的办法,估计发生冲突的几率和中国足球走向世界的几率差不多。