【发布时间】:2016-08-09 08:28:18
【问题描述】:
我这辈子从来没有遇到过这样的事情。
我在我的 C 程序中创建了一些简单的 uds 套接字,(我将使用 python 展示我的示例,但最终调用的是相同的系统调用/API)
最奇怪的事情发生了
from socket import *
a = socket(PF_UNIX, SOCK_DGRAM)
a.connect("SomePathAlreadyBounded")
for i in range(0,13):
print(str(i))
a.send("hey")
这最多打印 12,然后开始阻塞...并且仅当服务器从套接字缓冲区读取时才解除阻塞...我已经尝试过使用 SO_SNDBUF 和 SO_RCVBUF 下的 setsockopt 选项还没有成功
以前有人遇到过这种问题吗?如果是这样,我该如何解决它....我想强调一个事实,即send 在发送 12 个数据包后开始完全阻塞...不管它们的大小...
【问题讨论】:
-
@molbdnilo 大声笑,不是 UDS,请先阅读问题
-
好的,但问题仍然存在:为什么不发布您遇到问题的代码?
-
我现在无法测试它,但是 Linux 手册页在 unix(7) 手册页的
/proc/sys/net/core/下记录了一些参数。但是恐怕您将不得不调整一些内核参数以扩展限制,无论如何,您无法完全删除它。 -
-
@molbdnilo 我现在无法访问我的代码,而且它是一个非常复杂的 cpp 模型,为了证明问题的真实性而发布了太多代码,我发布的 python 代码导致同样的问题
标签: linux sockets unix unix-socket