gpt4 book ai didi

c# - 检查是否已收到数据套接字 c#

转载 作者:行者123 更新时间:2023-12-03 11:58:17 25 4
gpt4 key购买 nike

在使用 Socket.BeginSend() 的套接字中发送异步数据时,这会将数据发送到连接的客户端或服务器,现在可以正常工作了,但是现在当我拔出网线并再次发送内容时,它不会给出任何错误,

  • Socket.EndSend()不抛出异常
  • Socketerror 返回成功
  • socket.Connected 为真

  • 现在我知道,由于缓冲而发生 sendCallback 时,不能保证数据已经发送,但是我如何检查已经发送的数据是否已经发送和接收?

    最佳答案

    TCP/IP 不能保证所有已发送的数据也将被接收。但即使它可以保证这不是你所需要的。发送者真正需要的是知道它是否不必再次发送数据,这通常意味着发送的数据是否已经在接收者端进行了处理。

    如果发件人需要知道这一点,那么通讯协议(protocol) 必须进行更改,以便发送方可以收到接收方的确认,表明它可以安全地假定数据已被处理。另外,发件人必须如果接收方没有按时发回确认(并且在您的代码中 必须 决定如何处理它,可能会保存要发送的数据,则在某些时候宣布超时(并关闭套接字)稍后,或向用户发出警报)。也是接收者必须处理相同数据被发送两次的情况(作为先前连接中的最后一项,作为新连接中的另一项),并且不将此数据视为两个不同的数据。

    如果需要,我可以详细说明这些“必须”中的每一个。沟通很困难。

    关于c# - 检查是否已收到数据套接字 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16731849/

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