KumoKyaku / kcp

KCP C#版。线程安全,运行时无alloc,对gc无压力。
MIT License
832 stars 136 forks source link

已发送的数据包在超过dead_link仍在尝试继续发送 #22

Closed TedXi closed 1 year ago

TedXi commented 1 year ago

作者您好,很幸运能使用到开发如此便捷的C# KCP库。在使用中遇到一个疑问: 在使用KCP像未启动KCP服务的主机发送数据包时,客户端会启动自动重传,但是重传次数超过dead_link后,虽然state为-1,但是重传仍在继续。 想知道有什么办法可以使其停止对那个数据包的重传吗。 谢谢作者!

KumoKyaku commented 1 year ago

确实如此。当deadlink后,理论上应该抛出一个异常给外界,表示连接不可用。但是c版设计中没有这个机制,所以这个库为了保持一致性,也没加。虽然后续会一直重传,但是rto会迅速增加,悄悄过一会重传的数据包就会迅速减小,性能损失不是太多。当然,弃之不管也不是解决办法,建议是重写此函数,当deadlink时触发断线逻辑。

KumoKyaku commented 1 year ago

3d703e95c370496049424772ca3bd23b48cd13b5 下一个版本增加