如何验证TCP数据包是否在C#中收到了ACK?

Jus*_*ner 5 .net c# tcp

使用阻塞/非阻塞方法发送一些tcp数据后,例如:

Socket.Send() or Socket.SendAsync()
Run Code Online (Sandbox Code Playgroud)

我怎么知道我的数据收到了ACK消息?

.NET能否知道TCP数据是否已成功发送?

Gre*_*ill 13

确切知道的唯一方法是实现某种应用程序级别的确认.TCP级别"ACK"数据包根本不会暴露给应用程序级别,因此您必须使用更多内容.

  • 比如说……SharpPcap 还是 Pcap.Net?我不确定为什么这是公认的答案,因为它没有回答所提出的问题。 (3认同)

Sim*_*rim 5

你让另一端回应它.

即使TCP已经Acked它,如果接收端在处理消息并对其进行操作之前终止(有好的或坏的原因),你仍然不知道,所以唯一的方法是让对方告诉你.