蓝牙在2台Windows 7计算机上使用C#进行配对而不进行配对
我已经读过,在通过蓝牙进行通信之前必须进行配对,但我想知道,
我是否可以创建一个应用程序来读取由另一个蓝牙应用程序广播但未配对的文本。
因为我们可以看到设备周围其他蓝牙设备的名称。 因此,我们不能将我们的蓝牙无线电设置为可以读取任何蓝牙播放文本消息的状态。
示例:android中有createInsecureRfcommSocketToServiceRecord() & listenUsingInsecureRfcommWithServiceRecord()但是在C#中没有这样的窗口吗?
谢谢
我的终极目标 🙂
正在创建一个在Windows 7 PC上运行的应用程序,它可以创建即时蓝牙网络,用于对等文件传输和聊天
脚本
有一群人,每个人在每台计算机上都有这个应用程序,其中一个人希望与其他人分享文件(可能是电子书,PDF或任何东西)。 他在他的应用程序配置中设置了他的网络“net”(或任何其他名称),而其他人也在每个应用程序上添加了相同的名称。 最后,每个用户都可以在他们的应用程序显示中看到他们周围的其他蓝牙节点的列表,配置为相同的网络名称“net”。 所以每个人都可以将文件发送到同一网络中的选定节点。
设计
- 每个用户只 打开蓝牙无线电 ,然后在应用程序中输入所需的网络名称
- PC上的每个应用程序将通过临时创建的连接( 无需配对或用户参与 )迭代地与可访问的蓝牙设备通信,检查其网络名称并列出具有类似网络名称的可发现PC
- 然后他们将彼此共享这些列表,因此一台PC知道同一网络中的计算机,即使它们不在范围内。
- 通过算法解析的路径将文件从一台计算机发送到一台或多台计算机,甚至发送聊天文本。
- 所有这一切都将通过在每个应用程序之间建立的简单临时蓝牙连接来实现,除了网络名称之外不需要配对或认证。 (因为我不知道如何使用C#创建Piconets,或者如何创建蓝牙路由协议。
- 没有实施其他安全措施。
请让我知道任何其他更好的设计或方式。 非常感谢你阅读冗长的文字。 还包括任何有用的代码,可以帮助我实现上述目标。
我每天都会做几十个不配对的连接……我不知道这个谣言来自哪里。 : – )
正如你在Android上注意到的那样,默认是经过身份validation的连接 – 也许这就是谣言的起源? 即使在那里,正如您所注意到的,有一些方法可以请求“配对 – 不需要”连接,例如listenUsingInsecureRfcommWithServiceRecord。
因此,在Windows上的Microsoft堆栈上,通过套接字(winsock)使用蓝牙(RFCOMM)。 默认情况下 ,该连接不需要身份validation(配对),也不需要加密 – 事实上,要求auth / enc,必须设置套接字选项。 与Widcomm类似,您可以在创建连接时指定所需的安全级别,并且可以为“无”。 同样在Bluetopia上,类似于Linux上的BlueZ。
因此,如果您使用我的库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不知道你是否知道.NET上的TextWriter / -Reader子类,无论如何:
.... var wtr = new StreamWriter(peerStream); wtr.WriteLine("hello"); wtr.Flush();
另一方面:
.... var wtr = new StreamReader(peerStream); var line = wtr.ReadLine(); MessageBox.Show(line);
BluetoothChat中的代码几乎就是这样的。
艾伦