gpt4 book ai didi

c - Unix 套接字编程是否确保没有传输丢失,还是我必须将其合并到应用程序级别?

转载 作者:行者123 更新时间:2023-11-30 19:40:51 24 4
gpt4 key购买 nike

理论上 TCP/IP 可以保证传送。但在实际应用中,如果服务器宕机或者连接链路出现故障,那么如何保证所有需要发送的数据包都发送出去呢?另外发送方如何知道哪些数据包已成功发送。我正在尝试用 C 实现 tcp 协议(protocol)。 在之前的博客中,我读到,仅当发送方出现问题时,send() 函数才会返回 -1,如果传输失败,则可能不会返回 -1。我还读到,如果我将 SO_SNDBUFR 设置为数据包大小,则发送者将被阻止,直到收到 ack。这是正确的吗?

最佳答案

如果您使用send通过TCP套接字发送数据,并想确认数据是否已成功发送,那么简短的答案是肯定的,您需要在应用程序级别执行此操作。

一个简单的例子是让对方像单个字节一样发送确认。因此,您在发送之后接收单个字节。则表示发送成功。

这种逻辑很常见,例如客户端应用程序可能会远程同步一些数据,并需要尽快告诉用户一切都已完成。

您可以在 SO 上找到一些类似的问题进行阅读,例如 this .

关于c - Unix 套接字编程是否确保没有传输丢失,还是我必须将其合并到应用程序级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34650309/

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