Macos 以编程方式使用sysctl设置tcp延迟确认

Macos 以编程方式使用sysctl设置tcp延迟确认,macos,tcp,sysctl,Macos,Tcp,Sysctl,我正在尝试在OS X中将延迟确认值从3(默认值)更改为0。我可以通过编程方式更改发送空间,但不能更改延迟确认。思想?谢谢 int sendspace,retval,new_sendspace,len; len = sizeof(sendspace); new_sendspace = 131072; retval = sysctlbyname("net.inet.tcp.sendspace", &sendspace, &len,&new_sendspace, &

我正在尝试在OS X中将延迟确认值从3(默认值)更改为0。我可以通过编程方式更改发送空间,但不能更改延迟确认。思想?谢谢

int sendspace,retval,new_sendspace,len;
len = sizeof(sendspace);
new_sendspace = 131072;
retval =    sysctlbyname("net.inet.tcp.sendspace", &sendspace, &len,&new_sendspace, &len);
以上工作

// Turn off delayed Ack
int delayed_ack = 0;
len = sizeof(delayed_ack);
retval = sysctlbyname("net.inet.tcp.delayed_ack", &delayed_ack, &len, &delayed_ack, 
    &len);
printf("retval for delayed ack is %d\n",retval);    

延迟确认从未设置为0。

找到了我的答案。你就是这样做的

setsockopt(sockfd,IPPROTO_TCP, TCP_NODELAY,(char *) &flag, sizeof(int));

TCP_节点延迟禁用Nagle算法,而不是延迟确认。它们是两个独立的算法。