gpt4 book ai didi

c - Linux 如何缓冲数据报套接字?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:42:01 27 4
gpt4 key购买 nike

作为个人项目,我正在尝试使用 C 来设计网络时间同步协议(protocol)。真正让我感到困扰的一件事是我完全不了解我的内核将如何缓冲我的 udp 数据包。我想确保数据包会在我想要的时候准确发送,而不是缓冲到某个 block 大小或其他任何东西。我还想知道缓冲区是否可以确保数据报之间的划分,正如我已经看到的那样。我已经阅读了大量 Beej's Guide to Network Programming ,但我还没有找到任何可以帮助我的东西。

编辑:我了解 UDP 本身的工作原理。我只是询问内核套接字接口(interface)的属性。

最佳答案

如果数据包顺序和/或所有数据包的接收是一个问题,那么你需要实现一个协议(protocol),即发送方将发送一个数据包,它会等待直到它收到 ACK 的数据包(确认接收)从接收器返回。如果发送方没有在合理的时间内收到 ACK 数据包,它将重新发送相同的数据包。此外,在数据包的数据中,您可以包含一个数据包 ID,一个随着每个数据包发送而递增的整数;使用此 ID 可以避免数据包重复。这就是 UDP 数据包的大致流动方式。

UDP 不是面向连接的,您在服务器和客户端之间没有连接,客户端发送数据包而服务器接收它们,不能保证它们到达那里,也不能保证它们按发送顺序到达。对于面向连接的协议(protocol),请考虑使用 TCP。

关于c - Linux 如何缓冲数据报套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17772161/

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