Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C TCP服务器不可靠,丢弃过时的缓冲消息_C#_Sockets_Tcp_Buffer - Fatal编程技术网

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

C# C TCP服务器不可靠,丢弃过时的缓冲消息,c#,sockets,tcp,buffer,C#,Sockets,Tcp,Buffer,我的目标是构建一个c'èTCP服务器,该服务器必须传输本应通过UDP传输的数据,不幸的是,这不是我的选择 服务器必须传输恒定的实时数据流,例如:一系列数字 01 2 3 4 5等。。。客户端必须只显示最后一个。 如果一切顺利,客户端将收到每个号码,但如果由于某种原因数据包丢失,我希望检测到它,不再发送它,而是发送最新的号码 所以问题是:是否有可能在C中检测TCP数据包丢失并在不刷新的情况下清除缓冲区 谢谢你的时间!法比奥奥蒂 更新 丢弃除丢失的数据包之外的所有新数据包也可以 更新 同时检测ack

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

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

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

谢谢你的时间!法比奥奥蒂

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

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

No.1

在应用程序级别,数据包永远不会丢失。它将在TCP/传输级别不断重试,这样应用程序只能看到完整和准确的流,因此TCP是一个可靠的协议

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

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

在应用程序级别,数据包永远不会丢失。它将在TCP/传输级别不断重试,这样应用程序只能看到完整和准确的流,因此TCP是一个可靠的协议

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


1有些工具(如)可以在较低的抽象级别上使用TCP流,但这通常不适合或不适用于应用程序代码,并且在[.NET]TCP/Stream API中没有公开。

谢谢,然后我必须自己编写一个本机库。我会尽快将你的答案标记为已接受。如果没有人发布类似interop或任何其他黑客内容的帖子,那么我将不得不自己编写一个本地库。如果没有人发布类似interop或任何其他黑客的东西,我会尽快将您的答案标记为已接受