У меня есть приложение iOS, которое дистанционно соединяется с 3 сокетами (определенного оборудования). У каждого сокета есть свой приоритет. Один канал используется только для передачи сообщений между iPad App &, один для изображений Tx/Rx, другой для видео Tx/Rx. Я реализовал все три сокета, используя GCDAsyncSocket API & все работает нормально при использовании MSGSocket/ImageSocket (OR) MSGSocket/VideoSocket, но когда я начинаю использовать VideoSocket/ImageSocket/MSGSocket одновременно, это происходит там, где все идет немного. Я теряю пакеты данных. {Фактически отсутствует фрагмент файла :-(} Я прошел через API & нашел ошибку в API: Unable to complete Read Stream, которая, как я полагала, может быть причиной проблемы. Следовательно, я переключился на потоки & реализован тот же с помощью NSThreads/CFSocket API.Отладка потери пакетов в TCP-связи в приложении iOS/iPad
Я изменил только реализации для ImageSocket/VideoSocket кода с использованием NSThreads/CFSocket API & здесь реализация того же dropbox-ed. Я просто не в состоянии понять, как туда, где все идет не так, независимо от того, находится ли это в приложении iOS или на стороне сервера. По моему мнению, в TCP Communication не будет потери пакетов.
Есть ли способ отладки этой проблемы. Также я прошу пройти код &, сообщите мне, если что-то не так (я знаю, что это может быть слишком много, о чем я прошу, но мне нужна уверенность в правильности реализации кода). Любая помощь для решения этой проблемы будет высоко оценена.
EDIT 1: После @JoeMcMahon комментарий, я назвал это Technical Q&A & получил TCP Dump - trace.pcap file. Я открыл этот дамп tcp с Wireshark &, он показывает мне байты, переданные между портами аппаратного обеспечения & iPad. Кроме того, в терминале, когда я остановил захват TCP дамп Я видел эти сообщения:
12463 пакеты захваченные
36469 пакеты, полученные фильтром
0 пакетов, отброшенных ядром
Может кто-то указать на различие между пакетами захватили & пакеты, полученные по фильтру?
Примечание - Сброс TCP-дампа не относится к неудачному сценарию.
РЕДАКТИРОВАТЬ 1.1: Найдено ответ на разницу между пакетами захваченных & пакетов, полученных с помощью фильтра here
Я предполагаю, что у вас есть Wiresharked, чтобы вы могли видеть, каков фактический трафик - если у вас нет, это может быть просветляющим. –
Ваша проблема не в потере пакетов. Вы работаете со сокетами TCP-потока, которые полностью не знают о каких-либо пакетах. Операционная система позаботится об этом. – Anton