gpt4 book ai didi

c++ - 发送到失败的 C++//POSIX.4

转载 作者:行者123 更新时间:2023-11-30 03:06:10 25 4
gpt4 key购买 nike

所以 - 我正在运行一个应用程序,其中两个进程通过 UNIX 域套接字进行通信。通过套接字传递的绝大多数消息都得到了正确处理,但是当消息中的字节数超过一定限制时,我开始收到错误消息:

sendto failed: Message too long (POSIX.f)

我明白它在告诉我什么。我无法更改消息长度,也不想花时间对消息进行分段 - 而且所有消息都在同一台计算机上,因此我不必限制此域套接字上的消息长度。

有没有一种方法可以增加可写入域套接字的内存量,或者我在套接字初始化/sendto/recvfrom 调用中可能做错了什么会施加限制?我使用的发送/接收缓冲区非常大(比导致错误的消息大得多)。

最佳答案

您使用的是流套接字还是数据报套接字?如果它们是流式套接字,您只需执行第二次或第三次写入即可发送其余数据。如果它们是数据报套接字,您可能会卡住(也许您可以切换到流套接字?)但是可能有一个 setsockopt 选项会增加限制。您仍然可能需要为无法增加限制的情况做好准备。本质上你的问题是内核需要负责无限期地保留一个潜在的大数据单元,这很容易导致资源耗尽和 DoS,所以内核(有充分的理由)限制了它将为您保存的数据量。

关于c++ - 发送到失败的 C++//POSIX.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6876325/

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