2011-11-11 102 views
0

我爲wince 4.2設備寫了一個藍牙客戶端程序。設備發現工作正常。但是,當我嘗試連接到PC時,連接功能立即返回,錯誤代碼爲10053。 PC連接請求正在處理,提示輸入驗證碼,但wince設備似乎沒有等待。WinCE:連接期間出現10053錯誤

什麼可能導致此問題?我使用下面的步驟(爲簡單刪除錯誤處理):

WSAStartup(..)…////was successful. 

SOCKET m_Socket =Socket (AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM); //was successful. 

SOCKADDR_BTH sClinet; 
memset (&sClinet, 0, sizeof(sClinet)); 
sClinet.addressFamily = AF_BTH; 
sClinet.btAddr = btd.btaddr; ; //BT_ADDR of the PC obtained via Device Discovery.. 
sClinet.port = BT_PORT_ANY; //I did try 0, did not help! 
sClinet.serviceClassId = RFCOMM_PROTOCOL_UUID; 

int nConErr = connect (m_Socket, (SOCKADDR *)&sClinet, sizeof(sClinet)); 

nConErr立即返回10053。它甚至不等,即使PC識別出連接並且提示消息輸入PIN以進行認證。

回答

0

從你所描述的看起來它是一個配對/認證問題。您應該考慮同樣使用setsockopt功能:http://msdn.microsoft.com/en-us/library/ms863347.aspx

你應該嘗試使用SO_BTH_AUTHENTICATE它根據MSDN選項:

在連接插座,觸發認證。在未連接的套接字上,強制進行連接驗證。對於傳入連接,這意味着如果無法執行認證,連接將被拒絕。

所以在致電connect函數之前,您應該將選項設置到您的套接字。