【发布时间】:2020-07-10 16:20:54
【问题描述】:
我想在我的 Unix Socket 中禁用 Nagle 算法,可以吗?
因为我可以在教程中找到禁用它的所有内容仅适用于 TCP 套接字。这是我的unix socket初始化代码。
struct sockaddr_un local, remote;
u8 str[0xFFFF];
struct client_info cl;
if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
{
perror("socket");
exit(1);
}
local.sun_family = AF_UNIX;
strcpy(local.sun_path, SOCK_PATH);
unlink(local.sun_path);
len = strlen(local.sun_path) + sizeof(local.sun_family);
if (bind(s, (struct sockaddr *)&local, len) == -1)
{
perror("bind");
exit(1);
}
if (listen(s, 5) == -1)
{
perror("listen");
exit(1);
}
这是我发现禁用 nagle 算法的代码,但我不知道将它应用于我的 unix 套接字的参数。
int result = setsockopt(sock, /* socket affected */
IPPROTO_TCP, /* set option at TCP level */
TCP_NODELAY, /* name of option */
(char *) &flag, /* the cast is historical
cruft */
sizeof(int)); /* length of option value */
if (result < 0)
// ...
【问题讨论】:
-
假设这是可能的(正如已经指出的,它不是),你希望通过这样做来完成什么?
-
因为我在使用 recv() 接收时有些延迟