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

标签 c# sockets

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

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

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

    最佳答案

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

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

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

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

    相关文章:

    c# - 条件 XAML (WPF)

    javascript - 如何使用 Node.js 在 JavaScript 模块文件之间使用事件处理程序?

    c++ - C/C++ 字节顺序和 tcp 套接字

    java - 我将哪种类型的数组发送给构造函数?

    c - 建立tcp连接时给套接字的地址是什么?

    c# - 无论 .NET 中的时区如何,如何获得 FAT32 文件的正确修改日期时间?

    c# - 使用副本集启动 Docker Mongo

    c# - 在 C# 中检测相机图像中的对象

    c# - 将 Web 应用程序部署到 IIS 时出现 "CommunicationException was unhandled by user code"

    c - open命令适合二进制文件操作吗