2011-06-15 215 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