У меня интересная проблема с моим приложением для тестирования сокетов.
Я настроил сокет прослушивания с функцией AcceptCallback. Я подключился к гнезду прослушивания, используя:
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,
(CFStringRef) self.clientService.hostName,
self.clientService.port,
&myReadStream,
&myWriteStream);
и я отправляю данные обратно в прослушивающий сокет myReadStream и myWriteStream, оба из которых я приводил к их эквивалентам NSStream.
Проблема возникает после отправки множества отдельных пакетов данных. Размер пакетов не имеет значения, это число пакетов (или количество созданий CFStreamCreatePairWithSocketToHost), которые, по-видимому, вносят ошибку.
После того, как я отправляю тонны пакетов (возможно, около 100 или 200), когда я пытаюсь отправить данные через NSOutputStream, я получаю сообщение об ошибке в обратном вызове NSStreamEvent:
Operation could not be completed. (NSUnknownErrorDomain error 8.)
Затем, если я пытаюсь создать новый сервис и опубликовать его в сети, я получаю сообщение об ошибке, когда пытаюсь разрешить новый адрес. Это дает мне код ошибки 10 в NSNetService: метод делегата didNotResolve (также, описание ошибки здесь пусто).
Это почти как если бы прослушивающий сокет был "полон", но кажется, что он работает нормально, потому что когда я проверяю CFSocketIsValid, он возвращает true.
Я в тупике и потратил несколько часов, пытаясь отладить ситуацию ... Есть какие-нибудь мысли? Спасибо.