iphone - 有没有办法使用 CFStreamCreatePairWithSocketToHost() 获取套接字引用?

标签 iphone objective-c tcp

我正在使用 CFStreamCreatePairWithSocketToHost 创建一个套接字 tcp 连接来获取写入流(我不想准备任何数据):

CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)host, port, NULL, &writeStream);

这工作得很好,但因为 nagle's algorithm我的 TCP 命令被缓冲。这可能很酷,但在我的情况下,我需要尽快发送命令,不要有任何延迟。

我找到了一种使用以下代码禁用此“功能”的方法 here :

int yes = 1;
setsockopt(CFSocketGetNative(aSocket), IPPROTO_TCP, TCP_NODELAY, (void *)&yes, sizeof(yes));

但我不知道如何获得对我的套接字的有效引用。你能帮帮我吗?

最佳答案

CFDataRef socketData = CFWriteStreamCopyProperty(writeStream, kCFStreamPropertySocketNativeHandle);
CFSocketNativeHandle handle;
CFDataGetBytes(socketData, CFRangeMake(0, sizeof(CFSocketNativeHandle)), &handle);
// handle now contains the same thing as CFSocketGetNative(aSocket)

关于iphone - 有没有办法使用 CFStreamCreatePairWithSocketToHost() 获取套接字引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4082686/

相关文章:

ios - 从字符串日期获取三个字母的月份和日期?

ios - 使用日历事件调用 ios 应用程序

redirect - 子域使用 SRV 重定向到特定端口?

iphone - 如何遍历相机胶卷中存储的所有视频?

iphone - 使用动画删除 UITableView Cell

iphone - 将 indexpath 值传递给 FirstViewController

java - 使用 TCP/IP 套接字的多线程

iphone - 创建 uibutton 子类

objective-c - Reactive Cocoa - 将某些信号值转换为错误或完成

c++ - 使用 boost 的 async_write 的异步 tcp 服务器会导致错误的文件描述符