2013-05-16 7 views
0

Я работаю с NSStream для отправки и приема одиночных символов по сетевому соединению.
Я создаю потоки как для чтения, так и для записи с использованием CFStreamCreatePairWithSocketToCFHost(...).Ошибка закрытия и открытия NSStream

Основной рабочий механизм для отправки и получения работает нормально.

Теперь я хочу создать NSStream только тогда, когда мне нужно будет отправить или получить что-то (обычно один раз каждые 2 минуты). В первый раз я создаю потоки, отправляю пакет, закрываю его, и все работает хорошо. Затем я пытаюсь воссоздать NSStream (создать новый сокет и открыть поток на нем), функция открытия не работает. Так как я использую netcat, чтобы проверить его, я вижу, что при закрытии потока с использованием метода [NSStream close] соединение на сервере не закрывается. Как заставить закрыть сокет? Или есть лучший способ сделать то, что я пытаюсь сделать?

+0

Вы закрываете потоки с обоих концов? – Wain

+0

Нет. Я только закрываю поток на iPhone. Я не могу закрыть его с другой стороны. – Pablosproject

ответ

3

Использование CFWriteStreamSetProperty и CFReadStreamSetProperty установить kCFStreamPropertyShouldCloseNativeSocket к kCFBooleanTrue с тем, что основной сокет закрыт, когда поток закрывается.

+0

Я пробовал это решение, но гнездо не закрывается. Возможно, что если я конвертирую CFReadStreamRef и CFWriteStreamRef в NSOutputStream и NSINputStream, он потеряет свойство? – Pablosproject

+0

Я решил. Мне нужно открыть оба потока и закрыть оба, вместо этого он не будет закрыт. – Pablosproject

Смежные вопросы