【问题标题】:Bluetooth Android to Windows 7蓝牙 Android 到 Windows 7
【发布时间】:2011-06-15 06:35:49
【问题描述】:

我正在尝试制作一个应用程序,通过蓝牙将数据字符串从我的 Android 手机传输到运行 Windows 7(和 Vice-Versa)的笔记本电脑。

我想我会在 Windows 机器上打开一个服务器套接字,然后对 Android 应用程序进行编程以启动一个客户端套接字。但是知道Android SDP(服务发现协议)并通过UUID连接,造成了我感到困惑的一点。

对如何使用 Windows API 在服务器端启动服务器套接字感到困惑。 我的问题是,如果我只是用

启动蓝牙套接字,android 是否会检测到服务器套接字
SOCKET sock_s, sock_c;
SOCKADDR_BTH add1,add2;
sock_s =socket( AF_BTH,SOCK_STREAM,BTHPROTO_RFCOMM );
        if ( sock_s == INVALID_SOCKET )
            return -2;

        //Clearing the SOCKADDR_BTH variable
        memset(&add1,0,sizeof(add1));

        add1.addressFamily=AF_BTH;
        add1.serviceClassId=my_Guid;

或者是否有另一种方法可以在 MICROSOFT 堆栈上创建遵循 SDP 协议的服务器套接字?

【问题讨论】:

  • 各位大神帮忙就好!!

标签: android windows sockets bluetooth uuid


【解决方案1】:

您必须在 Windows 机器上使用本机代码吗?如果不使用我的库 (32feet.NET),它会让这些事情变得简单,例如Bluetooth Server-side:

Class MyConsts
  Shared ReadOnly MyServiceUuid As Guid _
    = New Guid("{00112233-4455-6677-8899-aabbccddeeff}")
End Class

  ...
  Dim lsnr As New BluetoothListener(MyConsts.MyServiceUuid)
  lsnr.Start()
  ' Now accept new connections, perhaps using the thread pool to handle each
  Dim conn As New BluetoothClient = lsnr.AcceptBluetoothClient()
  Dim peerStream As Stream = conn.GetStream()
  ...

您甚至可以通过 C++/CLR 从 C++ 使用 32feet.NET。

或者 IIRC,有一种简单的方法可以让 Windows WSASetService 为您的服务器套接字添加基本 SDP 记录(如果您没有要添加的自定义记录)。或者从 Windows 套接字 (getsockname) 获取 RFCOMM 端口号,并告诉 Android 应用程序直接连接到该端口号——假设它可以这样做......

【讨论】:

  • 感谢您的回复艾伦,说实话。我以前从未使用过 .NET,并且很推测是否可以使用您的库。查看您提供的上述代码,我发现如果我真的去做的话,这将使我的生活变得非常轻松。我期待着使用它。另一方面,你能指导我如何设置基本的 SDP 记录吗?那会指向我创建的套接字吗?因为我的大部分代码已经为 NATIVE 代码编写了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-14
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多