使用pyuv实现tcpping功能, 发现连接成功率偶尔会很低,但抓包发现实际的成功率要比探测结果高。
程序流程: 创建pyuv.Timer, 进行周期连接以及判断超时。创建socket, 添加到pyuv.loop中,进行可写事件监听, connect。
当出现一次连接超时后, 接下来的连接,都没有可写事件,无法进入回调函数,导致统计的成功次数低。(程序流程是当出现超时后,pyuv.watch.stop(), 关闭socket, 紧接着重新创建socket, 发连接。 基本上两次socket 文件描述符 值是一样的)
超时后发送的新连接, 好像是前一次连接的四次挥手没有完成,就发送了新的连接。
修改程序, 当超时后不立即发生新的连接,而是到了下一次周期后再进行新连接,这样就没有发现之前的问题, 但是这个肯定不止最好的解决办法。
问题原因以后更新。