2011-06-15 168 views
0

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

我想我会在Windows机器上打开一个服务器套接字并编写Android应用程序来启动一个客户机套接字。但是意识到Android SDP(服务发现协议)并且通过UUID连接,创造了一个让我感到困惑的点。

混淆了我应该如何在服务器端启动服务器套接字使用Windows API。 我的问题是机器人是否会检测服务器插槽,如果我仅仅是开始

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; 

蓝牙插座或者有另一种方式来创建跟随在微软SDP协议栈的服务器套接字?

+0

伙计们任何帮助将是好的! – 2011-06-15 07:24:09

回答

0

您是否必须在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() 
    ... 

你甚至可以32feet.NET使用它从C++使用C+++/CLR。

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

+0

谢谢你的回复Alan,对你很诚实。我以前从未使用过.NET,而且我是否可以使用自己的库,这是非常具有推测性的。看看你提出的上述代码,我发现如果我真的去做它,它会让我的生活变得非常简单。我期待着使用它。另一方面,你能指导我如何设置基本的SDP记录吗?那会指向我创建的套接字?因为我的大部分代码已经写入NATIVE代码。 – 2011-06-15 12:11:09