首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用长度错误的sendto()

调用长度错误的sendto()
EN

Stack Overflow用户
提问于 2014-09-15 15:50:00
回答 1查看 307关注 0票数 2

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

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-15 15:54:35

sendto()没有为您的消息使用的缓冲区类型的概念。它只知道你给它的参数值,所以你有责任确保它们是准确的。

如果length小于实际消息,则为UDP发送length字节数,并向TCP发送多达length字节。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25852003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档