gpt4 book ai didi

C# TCP 服务器不可靠,丢弃过时的缓冲消息

转载 作者:可可西里 更新时间:2023-11-01 02:45:23 25 4
gpt4 key购买 nike

我的目标是构建一个 c'è TCP 服务器,该服务器必须传输本应通过 UDP 传输的数据,不幸的是这不是我的选择。

服务器必须传输恒定的实时数据流,例如:数字序列0 1 2 3 4 5 etc... 客户端必须只显示最后一个。如果一切顺利,客户端将收到每个号码,但如果由于某种原因数据包丢失,我想检测它并且不再发送它,而是发送最新的号码。

所以问题是:是否可以在 C# 中检测 TCP 数据包丢失并在不刷新的情况下清除缓冲区?

感谢您的宝贵时间!法比奥·奥蒂

更新丢弃除丢失的数据包之外的所有新数据包也可以!

更新还检测 ack 数据包就足够了。

最佳答案

“没有。”1

在应用层面TCP永远不会“丢失”数据包。它将不断重试(在 TCP/传输级别),以便应用程序只能看到完整且准确的流 - 因此 TCP 是一个“可靠” 协议(protocol)。

如果丢弃的数据包太多,流将最终超时,但这大约是检测失败连接的程度。 (“心跳”和吞吐量监控可用于检测慢速/失败或高延迟连接,但只能从高级别进行。)


1一些工具,例如 Wireshark可以在较低的抽象级别处理 TCP 流,但这通常不适合(或不可行)应用程序代码,并且不会在 [.NET] TCP/Stream API 中公开。

关于C# TCP 服务器不可靠,丢弃过时的缓冲消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24198719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com