Bluetooth отправлять / получать текст без сопряжения с помощью C # на 2 компьютерах с Windows 7 - PullRequest
6 голосов
/ 11 августа 2011

Я прочитал, что сопряжение обязательно, прежде чем что-то сообщать по Bluetooth, но я хочу знать,

Могу ли я создать приложение, которое будет читать текст, который транслируется другим приложением Bluetooth без сопряжения.

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

Пример: createInsecureRfcommSocketToServiceRecord () & listenUsingInsecureRfcommWithServiceRecord () в Android, но в C # для Windows такого нет?

Спасибо


Моя высшая цель : -)

создает приложение, работающее на ПК под управлением Windows 7, которое создает мгновенную сеть Bluetooth для одноранговой передачи файлов и чата

Сценарий

Есть группа людей, у каждого есть это приложение на каждом компьютере, каждый хочет поделиться файлом (может быть электронная книга, PDF или что-нибудь) с остальными. Он устанавливает свою сеть "net" (или любое другое имя) в конфигурации своего приложения, а другие также помещают одно и то же имя в каждое приложение. Наконец, каждый пользователь может видеть список других узлов Bluetooth вокруг них на дисплее своих приложений, настроенных на одно и то же сетевое имя «net». поэтому каждый может отправлять файлы на выбранные узлы в одной сети.

Дизайн

  • Каждый пользователь только включает радиомодуль Bluetooth , а затем вводит нужное имя сети в приложение
  • Каждое приложение на ПК будет итеративно связываться с доступными устройствами Bluetooth через временно созданные соединения ( без сопряжения или участия пользователя ), проверять их сетевые имена и перечислять обнаруживаемые ПК с похожими сетевыми именами
  • Затем они будут делиться этими списками друг с другом, чтобы один ПК знал компьютеры в одной и той же сети, даже если они не находятся в радиусе действия.
  • Отправляйте файлы с одного компьютера на один или несколько компьютеров по пути, разрешенному алгоритмом, даже отправляйте текстовые сообщения в чате.
  • Все это будет достигнуто через простые временные соединения Bluetooth, устанавливаемые между каждым приложением время от времени, которые не требуют сопряжения или аутентификации, кроме имени сети. (Потому что я не знаю, как создавать Piconets с использованием C # или как создавать протоколы маршрутизации Bluetooth.
  • Никакой другой защиты не реализовано.

Пожалуйста, дайте мне знать о любом другом лучшем дизайне или способе. Большое спасибо за чтение длинного текста. Также включите любой полезный код, который может помочь мне достичь вышеуказанного.

1 Ответ

6 голосов
/ 11 августа 2011

Я делаю десятки непарных соединений каждый день ... Я не знаю, откуда этот слух.: -,)

Как вы заметили, в Android по умолчанию было установлено соединение с проверкой подлинности - может быть, именно отсюда и пошли слухи?Даже там, как вы заметили, есть способы запросить соединение «необязательное соединение», например listenUsingInsecureRfcommWithServiceRecord.

Итак, в стеке Microsoft в Windows используется Bluetooth (RFCOMM) через сокет (winsock),По по умолчанию это соединение не требует аутентификации (сопряжения) или шифрования - фактически для запроса auth / enc необходимо установить параметры сокета.Аналогично с Widcomm, вы указываете при создании соединения, какой уровень безопасности вы хотите, и это может быть «Нет».Аналогично в Bluetopia, аналогично в BlueZ в Linux.

Так что если вы используете мою библиотеку 32feet.NET , просто используйте BluetoothClient и BluetoothListener и выполните , а не set cli.Authenticate=trueи т.д.: -)

Некоторые примеры кода

Какова ваша конечная цель?Я только что понял, что вы спрашивали о передаче файла в другом вопросе ...: -)

В любом случае для передачи текста ... На стороне сервера есть код, подобный показанному в: http://32feet.codeplex.com/wikipage?title=Bluetooth%20Server-side и на клиенте, например: http://32feet.codeplex.com/wikipage?title=General%20Bluetooth%20Data%20Connections Не знаю, знаете ли вы подклассы TextWriter / -Reader в .NET, в любом случае с одной стороны:

....
var wtr = new StreamWriter(peerStream);
wtr.WriteLine("hello");
wtr.Flush();

и с другой:

....
var wtr = new StreamReader(peerStream);
var line = wtr.ReadLine();
MessageBox.Show(line);

В BluetoothChat есть код, который в значительной степени делает что-то таким.

Алан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...