2013-10-02 3 views
0

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

Чтобы обойти эту проблему, я попытался заставить каждое устройство иметь экземпляр сервера, а также экземпляр клиента, чтобы клиент мог подключить сервер к другому устройству. Однако это не кажется эффективным, поскольку для этого требуется 2 канала связи вместо одного.

Затем я попытался перейти на сайт Bluetooth, и они предложили «переключение роли», то есть когда сервер хочет получить некоторые данные от клиента, сервер делает себя клиентом, а клиент становится сервером, поэтому роль отменяется. Мне тоже это не очень нравится, потому что почему 2 устройства не могут играть одну и ту же роль и обмениваться данными одновременно? Какая связь называется так?

У меня не было опыта работы в сети, поэтому мой вопрос может показаться наивным, но я хотел бы, чтобы кто-то указал на этот ответ, или сообщите мне, какую информацию/какие главы учебника мне не хватает, поэтому я могу wiki его ,

ответ

0

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

Да, в Android-коммуникаторе Bluetooth выполняется с использованием аббревиатуры сокетов, а настройка соединения сокетов выполняется на основе клиент-сервер. Но как только сокет подключен, обе стороны имеют экземпляр BluetoothSocket, и я уверен, что обе стороны могут получить выходной поток и инициировать связь. Что заставляет вас думать иначе?

+0

Это потому, что я читал в API под названием BlueCove, и я не нашел способа активно запрашивать данные с сервера на клиент. Я, вероятно, просто неправильно читал некоторые страницы. Я еще раз посмотрю на это. благодаря – turtlesoup

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