gpt4 book ai didi

c - 这是处理 UDP 消息的部分读取的正确方法吗?

转载 作者:可可西里 更新时间:2023-11-01 02:49:15 24 4
gpt4 key购买 nike

因此在 TCP 流的情况下,需要跟踪每次 recv 调用读取了多少消息。然后可以将部分读取拼凑在一起,最终可以正常接收消息。

但是对于UDP报文,应该如何处理部分读取(假设所有的UDP报文都足够小以避免分片)?由于部分消息的剩余数据似乎被丢弃,是否只是确保 recvfrom 返回与已发送缓冲区大小相同的问题?如果存在差异,则表示它是部分且有缺陷的消息,应跳过。

所以从概念上讲,TCP 示例需要一个循环,而 UDP 示例只需要一个 if 语句。

这是正确的吗?

最佳答案

不可能在 UDP 中进行部分读取。 UDP 保证接收到的数据报与发送时一样,无论是否分片,因此必须先接收到整个数据报才能读取它。

参见:http://en.wikipedia.org/wiki/User_Datagram_Protocol ,您可以按照其中的引用资料获取更多官方资源。

至于读入缓冲区,您将需要一个至少有任何可能的数据报大小的缓冲区。或者另一种常见的方法是在数据报的开头附近包含数据报的大小,这样您就可以只读取那些字节来获取该数字,然后使用适当大小的缓冲区。

关于c - 这是处理 UDP 消息的部分读取的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19473514/

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