蓝牙在2台Windows 7计算机上使用C#进行配对而不进行配对

时间:2011-08-10 20:57:49

标签: c# networking network-programming bluetooth network-protocols

我已经读过,在通过蓝牙进行通信之前必须进行配对,但我想知道,

我可以创建一个能够读取文本的应用程序吗? 由另一个蓝牙应用程序播放而未配对。

因为我们可以看到设备周围其他蓝牙设备的名称。因此,我们不能将我们的蓝牙无线电设置为可以读取任何蓝牙播放文本消息的状态。

示例: createInsecureRfcommSocketToServiceRecord()&在Android中的 listenUsingInsecureRfcommWithServiceRecord()但在C#for Windows中不存在这样的内容吗?

由于


我的终极目标: - )

正在创建一个在Windows 7 PC上运行的应用程序,它可以为对等文件传输和聊天创建即时蓝牙网络

方案

有一群人,每个人在每台计算机上都有这个应用程序,其中一个人希望共享一个文件,(可能是电子书,PDF或任何东西)。他在他的应用程序配置中设置了他的网络“net”(或任何其他名称),而其他人也在每个应用程序上添加了相同的名称。最后,每个用户可以在他们的应用程序显示中看到他们周围的其他蓝牙节点的列表,配置为相同的网络名称“net”。所以每个人都可以将文件发送到同一网络中的选定节点。

设计

  • 每个用户 打开蓝牙无线电,然后在应用
  • 中输入所需的网络名称
  • PC上的每个应用程序都会通过临时创建的连接(无需配对或用户参与)以迭代方式与可访问的蓝牙设备进行通信,检查其网络名称并列出具有类似网络名称的可发现PC
  • 然后他们将彼此分享这些列表,因此一台PC知道同一网络中的计算机,即使它们不在直接范围内。
  • 通过算法解析的路径将文件从一台计算机发送到一台或多台计算机,甚至发送聊天文本。
  • 所有这一切都将通过在每个应用程序之间建立的简单临时蓝牙连接来实现,除了网络名称之外不需要配对或身份验证。 (因为我不知道如何使用C#创建Piconets,或者如何创建蓝牙路由协议。
  • 没有实施其他安全措施。

请让我知道任何其他更好的设计或方式。非常感谢你阅读冗长的文字。还包括任何有用的代码,可以帮助我实现上述目标。

1 个答案:

答案 0 :(得分:6)

我每天都会建立数十个不配对的连接......我不知道这个传闻来自哪里。 : - , - )

正如您在Android上注意到的那样,默认是经过身份验证的连接 - 也许这就是谣言的起源?正如您所注意到的那样,即使在那里,也有办法要求“配对 - 不需要”连接,例如listenUsingInsecureRfcommWithServiceRecord。

因此,在Windows上的Microsoft堆栈上,通过套接字(winsock)使用蓝牙(RFCOMM)。通过默认连接要求身份验证(配对),也不加密 - 实际上要请求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不知道你是否知道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中的代码几乎可以像那样

艾伦