急急急!蓝牙传输,请大家帮忙!
河北三哥 2008-10-08 10:22:14 在蓝牙建立socket连接是总是失败,不知是那写的不对,请大家帮忙看看!也不是每次都连接失败,也有连接成功的时候,好像配对过的再连接接失败了,代码如下:
BT_Info *pBtInfo = NULL;
ULONGLONG ulBTAddr;
BOOL bRet = FALSE;
int nRet;
if(!m_BtMap.Lookup(m_sCurSelDevName,(void*&)pBtInfo))
{
m_nErrNo = SELECT_DEVICE_ERROR;
return FALSE;
}
memcpy(&ulBTAddr,&pBtInfo->btInfo.Address.ullLong,sizeof(pBtInfo->btInfo.Address.ullLong));
SOCKET btSocket = socket(AF_BTH,SOCK_STREAM,BTHPROTO_RFCOMM);
if(btSocket == INVALID_SOCKET)
{
PrintLastError();
return FALSE;
}
unsigned int channel=1;
// GUID btguid_obex = {0x00000008, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB};
GUID obex_objectpush = {0x00001105, 0x0000, 0x1000, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB};
SOCKADDR_BTH btDevAddr = {0};
btDevAddr.addressFamily = AF_BTH;
btDevAddr.btAddr = ulBTAddr;
btDevAddr.serviceClassId = obex_objectpush;
btDevAddr.port = channel & 0xff;
nRet = connect(btSocket,(SOCKADDR*)&btDevAddr,sizeof(btDevAddr));//再建立连接是返回-1或者其他错误
if(nRet != 0)
{
PrintLastError();
return FALSE;
}
m_obex.SetSocket(btSocket);
return m_obex.Connect();