Любая идея о том, как получить скрытую розетку в NSURLSessionStreamTask?
Мы используем NSURLSessionStreamTask для связи по tcp. Мы бы хотели, чтобы базовый сокет bsd отключил алгоритм Nagel. Проблема в том, что у нас всегда есть дескриптор сокета NULL, возвращаемый из NSURLSessionStreamTask
Создать NSURLSessionStream с помощью NSURLSessionStreamTask * _streamTask = [some_session streamTaskWithHostName: _hostname port: _port];
* * Захватите пары задач, используя:
[_ streamTask captureStreams]
Открытие потоков в делегате "updateInputStream: outputStream:"
- (void)updateInputStream:(NSInputStream *)inputStream outputStream:(NSOutputStream *)outputStream {
if (inputStream == nil || outputStream == nil) {
return;
}
_inputStream = inputStream;
_outputStream = outputStream;
[_inputStream setDelegate:self];
[_outputStream setDelegate:self];
[_inputStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[_outputStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
[_inputStream open];
[_outputStream open];
}
Мы можем использовать _inputStream и _outputStream для отправки / получения данных на удаленный хост.
Однако при попытке получить kCFStreamPropertySocketNativeHandle для этого _inputStream / _outputStream, NULL всегда возвращается .
CFDataRef socketData = CFWriteStreamCopyProperty((__bridge CFWriteStreamRef)_outputStream), kCFStreamPropertySocketNativeHandle);
}
Я также пытался с _inputStream с использованием CFReadStreamCopyProperty, но все еще возвращается NULL.
Любая идея опочему NULL возвращается для потоков ввода / вывода, захваченных из NSURLSesssionStreamTask?