检查是否已经接收到socket c#的数据
本文关键字:socket 数据 是否 检查 | 更新日期: 2023-09-27 18:15:04
当在Socket.BeginSend()
的套接字中发送异步数据时,这将发送数据到连接的客户端或服务器,现在这工作得很好,但现在当我拔出网线并再次发送时,它不会给出任何错误,
-
Socket.EndSend()
不抛出异常 Socketerror返回成功 - 插座。已连接为真
现在我知道,由于缓冲,当sendCallback发生时,不能保证数据已经发送,但是我如何检查已经发送的数据是否已经发送和接收?
TCP/IP不能保证所有已经发送的数据也将被接收。但即使它能保证,那也不是你需要的。发送方真正需要的是知道它是否不需要再次发送数据,这通常意味着发送的数据是否已经在接收方处理。
如果发送方需要知道这一点,那么通信协议必须更改,以便发送方可以收到接收方的确认,它可以安全地假设数据已被处理。此外,如果接收方没有及时发送确认,发送方必须在某一点上宣布超时(并关闭套接字)(并且在您的代码中,必须决定如何处理它,可能保存稍后发送的数据,或者向用户发出警报)。此外,receiver 必须处理相同的数据被发送两次的情况(作为上一个连接的最后一项,作为新连接的另一项),而不是将此数据视为两个不同的数据。
如果需要,我可以详细说明每一个"必须"。