gpt4 book ai didi

c - 以错误的长度调用 sendto()

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:10 25 4
gpt4 key购买 nike

ssize_t sendto(int socket, const void *message, size_t length, int flags, const struct sockaddr *dest_addr, socklen_t dest_len);

在上面的 sendto() 概要中,第 3 个字段代表 length,理想情况下它是以字节为单位发送的 message 的大小。

如果 length 字段错误并且不等于 message 的大小怎么办?

sendto() 成功发送仅提到的长度字节。如果是,如果长度大于实际有效的 message 大小,会发生什么情况。

最佳答案

sendto() 没有您用于消息的缓冲区类型的概念。它只知道您提供给它的参数值,因此您有责任确保它们准确无误。

如果length小于实际消息,length字节数为UDP发送,最多发送length字节用于 TCP。

如果length 大于实际消息,则行为未定义。充其量,您可能会从周围的内存中发送随机数据。更糟糕的是,当您尝试从无效内存发送字节时,您的代码会崩溃。

关于c - 以错误的长度调用 sendto(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25852003/

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