4

似乎标题是自我描述的。我想提高在我的应用程序中发送和接收数据的速度,我被告知将 tcp_nodelay 设置为 true。但我不知道如何使用 GCDAsyncSocket 做到这一点。谁能帮我?

4

1 回答 1

3

我没有使用过 GCDAsyncSocket,但是“GCDAsyncSocket.h”表明您可以使用该方法获取底层套接字描述符,该socketFD方法必须仅在调用中performBlock:调用。所以下面的代码可能会起作用:

[asyncSocket performBlock:^{
    int fd = [asyncSocket socketFD];
    int on = 1;
    if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char*)&on, sizeof(on)) == -1) {
        /* handle error */
    }
}];

您可能需要添加

#include <netinet/tcp.h>
#include <netinet/in.h>

到你的源文件来编译它。正如我所说,我还没有尝试过,但也许它有助于为您指明正确的方向。

于 2012-08-17T17:56:47.597 回答