Closed chenfengfeng closed 5 years ago
各方面查询了下,代码里面的超时,其实是在建立建立后的发送和接收的超时,而不是建立连接的超时,默认超时时间为2分7秒,代码的sock采用了柱塞式连接,所以遇到一个不存在的IP的时候就会卡住等待很久,我查询了下,最好就是采用非柱塞式连接,这样的话,代码是需要改变的,不能这样写。。。
是的,代码里使用的是阻塞式的。其实我们想要的结果就是三次TCP连接的时长。个人感觉代码整体上是没问题的,就是少了一种特殊情况的处理(没想到这种case),即:遇到一个不存在的ip,阻塞式socket会很久导致卡住。我们只需要对这种情况做一个处理即可,可以通过添加signal的方式捕获到这种case,进而返回结果结束tcp ping。 后续代码会更新。 感谢你提的issue。。。
嗯嗯~~希望能够优化一下,毕竟作为测试的项目,不可能没有错误的IP来测试的,所以我觉得还是有必要加上超时处理,否则一直在等待时间太长了
嗯嗯,好的。这个项目刚开始就只是研究基于icmp的ping和traceroute,后来由于工作需要就一点一点把用到的东西都加进去了,有点糙哈。 后续我会继续尽力优化。非常感谢您!
@chenfengfeng 这个问题 有解法吗
@CivelXu 这个问题已经解决过了呢,现在回等待1s,如果1s连接不成功,就这接error了。
已经解决过了,请看github上的回复。
xuxiwen notifications@github.com 于2021年1月14日周四 下午3:30写道:
@chenfengfeng https://github.com/chenfengfeng 这个问题 有解法吗
— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/mediaios/net-diagnosis/issues/7#issuecomment-759983036, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALBSXO66BCMB5I7LOQNQAPDSZ2MQLANCNFSM4I7UUUIQ .
我设置了timeout后还是不能,要等好久