Отправка/получение текста по Bluetooth без сопряжения с использованием С# на 2 компьютерах с Windows 7

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

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

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

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

Спасибо


Моя конечная цель :-)

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

Сценарий

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

Дизайн

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

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


person Zerone    schedule 10.08.2011    source источник


Ответы (1)


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

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

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

Поэтому, если вы используете мою библиотеку 32feet.NET, просто используйте BluetoothClient и BluetoothListener и не делайте этого установить 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 есть код, который делает что-то подобное.

Алан

person alanjmcf    schedule 11.08.2011
comment
Спасибо, это именно то, что я хотел знать, вы очень ясно объяснили. Я пробую это прямо сейчас. Спасибо - person Zerone; 12.08.2011
comment
Я немного запутался, создавая это, потому что я новичок в программировании Bluetooth, можете ли вы поделиться простым кодом, если это возможно (в идеале на С#), который делает вышеперечисленное (отправка текста и т. д.). Спасибо. - person Zerone; 12.08.2011
comment
Большое спасибо за примеры кода, Аллан, я их тестирую. Также я отредактировал свой вопрос, который описывает мою конечную цель. Я очень новичок во всей этой области сетевого и Bluetooth-программирования, поэтому, пожалуйста, не обращайте внимания на запутанный вопрос, который я задавал здесь и там, так как я не знаю, что искать прямо сейчас, потому что мне не хватает некоторых технических знаний. в этой области, чтобы сначала создать правильный дизайн. Еще раз спасибо. - person Zerone; 13.08.2011