1.发送
void CBluetoothEngine::SendMessageL(const TDesC& aData)
{
RBuf8<256> allData;
TUint8 mark(0x01);
allData.Copy(&mark);
iSendData8.Close();
iSendData8.Assign(CnvUtfConverter::ConvertFromUnicodeToUtf8L(aData));
TUint length = iSendData8.Length();
allData.Append(length);
allData.Append(length>>8);
allData.Append(length>>16);
allData.Append(length>>24);
allData.Append(iSendData8);
ClientSendL(allData);
allData.Close();
}
上面的函数本身是没有问题的,但是由于接受方机器性能的问题的可能会出问题。
ClientSendL(allData) 是个异步函数(其中调用了 iSock.Write(aData, iStatus) ),执行完ClientSendL, allData.Close()也执行了,这样的 话 发送的数据 就丢失了。