Я использую следующий код, чтобы получить собственный дескриптор сокета в приложении iOS.Звонок для получения родного сокета для CFStream всегда терпит неудачу на iOS
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
}
Однако результат функции CFWriteStreamCopyProperty
всегда NULL
. Оба вызова для открытия сокета успешны (readOpen
и writeOpen
являются истинными). Я не мог найти документацию о том, почему это может потерпеть неудачу. В чем причина того, что этот код работает не так, как ожидалось?
API-интерфейс вы назвали неправильно: http://stackoverflow.com/questions/4082686/is-there-a-way-to-get-the-socket-reference-by-using-cfstreamcreatepairwithsocket – bluealert
@bluealert нет. См. Принятый ответ – jonnydee