Bonjour/NSNetService Данные, записанные в NSOutputStream, никогда не передаются другой стороне (includesPeerToPeer = true)

У меня есть приложение для iOS, которое устанавливает одноранговое соединение через Bonjour/NSNetService. (на основе примера кода WiTap)

В некоторых случаях оба устройства больше не будут получать данные через несколько секунд, пока они все еще могут записывать данные (т. е. без сообщения об ошибке).

Данные, записанные в NSOutputStream, никогда не попадают в NSInputStream другой стороны.

Странно то, что отправка и получение работают сразу после установления соединения. Кажется, что это портится через несколько секунд.

Если я устанавливаю includePeerToPeer = false, этого больше не происходит. У кого-нибудь такая же проблема? Мне нужно использовать одноранговую сеть, потому что это необходимо для использования Bluetooth.

Спасибо


person Pablo Martinez    schedule 10.07.2016    source источник


Ответы (1)


Мое первое предположение будет заключаться в том, что вы записываете данные в поток до того, как получите событие потока, сообщающее вам, что он готов принять больше данных.

Если это не проблема, то либо это ошибка в вашем коде (которую вы не опубликовали), либо... ну, вполне возможно, что рассматриваемый класс все еще работает неправильно. Видеть:

https://developer.apple.com/library/ios/qa/qa1546/_index.html

Если это так, вам, возможно, придется ненадолго заглянуть в Core Foundation.

person dgatwood    schedule 10.08.2016
comment
Я использовал этот патч, но он ничего не меняет. - person Pablo Martinez; 28.08.2016