Устройство Wi-Fi к проблеме связи устройства

, я написал код в моем приложении, чтобы включить устройство для связи устройства WiFi (передача только текста / строка). Код такой же, как образец Apple приложения Witap , который загружен с Developer.apple.com.

Это работает в моей сети штрафа и другие сети.

Однако его не работает на моем клиентском сайте.

Я провел время на клиентском сайте, чтобы разобраться на проблему с устройствами, не общающимися друг с другом, и это то, что я нашел. Они в своей установке безопасности блокируют целостную связь ... », и мое устройство связи идентифицируется как одноранговая цепь.

Есть ли способ решить эту проблему Есть ли что-то, кроме Peer 2 Peer WiFi Communication, которое поддерживает Apple?

Prototype Wi-Fi приложения Рабочие концепции


В основном есть четыре класса в приложении WiFi с именем AppController, Picker, BrowberviewController, TCP-сервера.

Когда приложение загружает класс AppController, будет инициализировать поток NSINPUTSTRAEM и NSOUTPUTPUT.

, а также будет называть метод «Пуск» от класса TCPSERVER, чтобы установить номер порта.

После этого будет называть метод «enableBounjourwithdomain» из класса TCPSERVER.

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

После выполнения этого метода устройство отправителя может идентифицировать наше устройство и возможность подключения.

Получение собственного имени устройства


TCP Serverserver делегат «DidenabledBounjer» будет работать после вышеуказанного выполнения кода, и он даст текущее имя устройства.

Тогда делегат NSNETSERVICE "DIDFINDSERVICE" будет работать (он работает при обнаружении каждой службы) и извлеките название обнаруженного обслуживания.

После получения нового имени сервиса мы проверим, либо это то же самое для нашего устройства устройства, которое мы получили из делегата «DidenabledBounjer».

Если нет, новое имя обслуживания добавит в NSmutable массив, названный в виде служб.

Затем массив служб связывается с представлением таблицы, и мы можем увидеть список имена обнаруженных устройств.

Обнаружение новых устройств:


Нет настроек таймера для обнаружения новых устройств.

Когда новое устройство подключено в той же сети Wi-Fi, делегат «DidfindService» будет напусковать (это делюгат NSNETSERVICE, реализованный в классе BrowserviewController).

DidfindService даст новое имя устройства. После получения этого мы проверим, то же самое для нашего прибора, которую мы получили от делегата «DidenabledBounjer».

Если нет, имя службы добавит в NSmutable массив, названный в виде служб.

Затем сортируйте все обнаруженные; Имена устройств в соответствии с именем устройства и перезагрузите представление таблицы.

Работа после выбора имени устройства из вида таблицы


После нажатия на имя устройства на табличном представлении он будет вызывать делегат «DadeSelectRowatindexpath», который реализован в классе BrowserviewController (это делегат класса TableView).

Это выберут название Netservice из наших услуг Array (содержит все обнаруженные услуги) в соответствии с индексом TAXLVIEW и установленным результирующим NSService в качестве текущей службы.

Запустить делегат «DIDRESILVILINSTANCE», и он установит значения ввода и вывода.

После получения ценностей Ting для ввода и вывода его вызовут «OpenStream», чтобы открыть входные и выходные потоки.

Наконец, он отпускает объекты NSService и Picker и готовы отправлять сообщения с выбранными устройствами.

Работа кнопки «Отправка»


Вызов «Отправить» функцию из класса BrowserviewController со строковым параметром. Это может быть ввод текста пользователя или сгенерированная строка после распознавания речи.

Преобразуйте входную строку в виде типа данных UINT_8 и отправьте его на устройство приемника.

На стороне ресивера работает


, когда данные пришли к устройству приемника. Делегат «TCPServerAceptCallback» будет вызвать (реализован в классе TCPSERVER).

Это позвонит методу «DIDACPECTConnectionForserver» из CARSERVIVEWIVESCONLOLL CALSS через другой делегат класса TCPSERVER с именем «HandleNewConnectionFromAddress».

Запустил «Делегат ручки потока», который находится в классе «AppController», и он проверит, есть ли укусы или нет.

Если байты доступны, конвертируйте данные типа uint_8 в строку, и мы отображаем результируемую строку в текстовом поле ресивера.

, а также загрузка изображений и отображение его в представлении изображения из AppBundle с использованием результирующей строки.

6
задан humblePilgrim 15 September 2011 в 13:47
поделиться