使用C#在两台Windows 7电脑上,在没有配对设备的情况下,通过蓝牙发送/接收文本。

7
我读到过在通过蓝牙通信之前必须进行配对,但我想知道, 是否可以创建一个应用程序,它可以读取由另一个蓝牙应用程序广播的文本而无需配对。 因为我们可以看到设备周围其他蓝牙设备的名称。那么我们不能将蓝牙电台设置为一种状态,使其读取任何蓝牙广播文本消息吗?
例如:在Android中有createInsecureRfcommSocketToServiceRecord()&listenUsingInsecureRfcommWithServiceRecord(),但是在Windows的C#中没有这样的东西吗?
谢谢

我的终极目标 :-)

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

场景

有一组人,每个人的计算机都安装了此应用程序,其中一个人想要与其他人分享文件(可能是电子书、PDF或其他任何东西)。他在应用程序配置中设置他的网络“net”(或任何其他名称),其他人也在每个应用程序中放置相同的名称。最后,每个用户都可以在其应用程序显示中看到他们周围其他蓝牙节点的列表,这些节点配置为相同的网络名称“net”。因此,每个人都可以向同一网络中选择的节点发送文件。

设计

  • 每个用户打开蓝牙电台,然后输入所需的网络名称
  • PC上的每个应用程序将通过临时创建的连接(无需配对或用户参与)迭代地与可达到的蓝牙设备通信,检查它们的网络名称并列出具有类似网络名称的可发现PC
  • 然后他们将彼此共享这些列表,因此一个PC知道他们同一网络中的计算机,即使它们不直接在范围内。
  • 通过由算法解析的路径将文件从一台计算机发送到一台或多台计算机,甚至发送聊天文本。
  • 所有这些都是通过每个应用程序之间简单临时蓝牙连接实现的,这不需要配对或身份验证,除了网络名称。(因为我不知道如何使用C#创建Piconets,或者如何创建蓝牙路由协议。
  • 没有实施其他安全措施。
请让我知道是否有任何更好的设计或方法。非常感谢您阅读冗长的文本。还请提供任何有助于我实现上述目标的有用代码。
1个回答

7
我每天都会进行数十次未配对连接...我不知道这个谣言是从哪里来的。:-,)
正如你在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 不知道你是否了解.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中有代码几乎做了类似的事情。
Alan

谢谢,这正是我想知道的,你解释得非常清楚。我会立刻尝试。谢谢。 - Zerone
我对创建这个有点困惑,因为我是蓝牙编程的新手,如果可能的话(最好是用C#),你能分享一个简单的代码来完成上述任务吗(发送文本等)?谢谢。 - Zerone
非常感谢您提供的代码示例,Allan。我正在测试它们。同时,我编辑了我的问题,描述了我的最终目标。我对网络和蓝牙编程这个领域非常陌生,所以请不要介意我在问题中有时会提出一些混淆的问题,因为我现在不知道该寻找什么,因为我缺乏这个领域的一些技术专业知识来首先创建一个合适的设计。再次感谢您。 - Zerone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接