ios - 调用以获取 CFStream 的 native 套接字在 iOS 上总是失败
<p><p>我使用以下代码在 iOS 应用程序中获取 native 套接字句柄。</p>
<pre><code>CFReadStreamRef readStream = NULL;
CFWriteStreamRef writeStream = NULL;
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)@"example.com", 443, &readStream, &writeStream);
Boolean readOpen = CFReadStreamOpen(readStream);
Boolean writeOpen = CFWriteStreamOpen(writeStream);
CFDataRef socketData = CFWriteStreamCopyProperty(writeStream, kCFStreamPropertySocketNativeHandle);
if (socketData == NULL) {
NSLog(@"Failed to get native socket!"); // Always fails
}
</code></pre>
<p>然而,函数<code>CFWriteStreamCopyProperty</code>的结果总是<code>NULL</code>。两次打开套接字的调用都成功(<code>readOpen</code> 和 <code>writeOpen</code> 为真)。我找不到任何关于为什么这可能会失败的文档。这段代码没有按预期工作的原因可能是什么?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>流可能在后台打开,在这种情况下,<code>CFWriteStreamOpen</code> 将始终返回 true,并且流的状态将为 <code>kCFStreamStatusOpening</code>。只有在流成功打开后,才能获得 native 套接字。您可以使用 <code>CFWriteStreamScheduleWithRunLoop</code> 来监听打开完成事件。</p></p>
<p style="font-size: 20px;">关于ios - 调用以获取 CFStream 的 native 套接字在 iOS 上总是失败,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/28775890/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/28775890/
</a>
</p>
页:
[1]