65,211
社区成员
发帖
与我相关
我的任务
分享
CString CMyConnection::ReadUTF()
{
if(!m_pBufferRead)
{
return L"";
}
DWORD dwBegin =GetTickCount();
int Size = 0;
Size |= m_pBufferRead[m_ReadIndex++] << 8;
Size |= m_pBufferRead[m_ReadIndex++];
char *szUTF8 = new char[Size + 1];
memset(szUTF8,0,sizeof(char)*(Size + 1));
int i=0;
while(i<Size)
{
szUTF8[i] = m_pBufferRead[i+m_ReadIndex];
i++;
}
szUTF8[i] = '\0';
m_ReadIndex += Size;
DWORD dwNum = MultiByteToWideChar (CP_UTF8, 0, szUTF8, -1, NULL, 0);
//分配相应的数组空间:
TCHAR *szText= new TCHAR[dwNum];
memset(szText,0,sizeof(TCHAR)*dwNum);
if(!szText)
{
delete []szText;
wprintf(L"接受数据内存分配失败");
return FALSE;
}
//UTF-8转UTF-16:
MultiByteToWideChar (CP_UTF8, 0, szUTF8, -1, szText, dwNum);
szText[dwNum - 1] = '\0';
CString strRec = L"";
strRec += szText;
CString strText = L"";
strText.Format(L"接收到:%s\n",strRec);
wprintf(strText);
//释放占用的内存:
DWORD dwEnd = GetTickCount();
CString strTime = L"";
strTime.Format(L"\nReadUTF 花费时间:%ld 毫秒\n",dwEnd-dwBegin );
wprintf(strTime);
if(szText)
{
delete []szText;
}
if(szUTF8)
{
delete []szUTF8;
}
return strRec;
}
CString CMyConnection::ReadUTF()
{
if(!m_pBufferRead)
{
return L"";
}
DWORD dwBegin =GetTickCount();
int Size = 0;
Size |= m_pBufferRead[m_ReadIndex++] << 8;
Size |= m_pBufferRead[m_ReadIndex++];
char *szUTF8 = new char[Size + 1];
memset(szUTF8,0,sizeof(char)*(Size + 1));
int i=0;
while(i<Size)
{
szUTF8[i] = m_pBufferRead[i+m_ReadIndex];
i++;
}
szUTF8[i] = '\0';
m_ReadIndex += Size;
DWORD dwNum = MultiByteToWideChar (CP_UTF8, 0, szUTF8, -1, NULL, 0);
//分配相应的数组空间:
/////////////
TCHAR *szText= new TCHAR[dwNum];
memset(szText,0,sizeof(TCHAR)*dwNum);
if(!szText)
{
delete []szText;
wprintf(L"接受数据内存分配失败");
return FALSE;
}
//UTF-8转UTF-16:
MultiByteToWideChar (CP_UTF8, 0, szUTF8, -1, szText, dwNum);
szText[dwNum - 1] = '\0';
///////////////////////////////
DWORD dwBeginMulti =GetTickCount();
CString strText = L"";
strText.Format(L"接收到:%s\n",szText);
wprintf(strText);
DWORD dwEndMulti = GetTickCount();
CString strTimeMulti = L"";
strTimeMulti.Format(L"\n Format 花费时间:%ld 毫秒\n",dwEndMulti-dwBeginMulti);
wprintf(strTimeMulti);
///////////////////////////////////////////////////////////
DWORD dwEnd = GetTickCount();
CString strTime = L"";
strTime.Format(L"\nReadUTF 花费时间:%ld 毫秒\n",dwEnd-dwBegin );
wprintf(strTime);
//释放占用的内存:
if(szText)
{
delete []szText;
}
if(szUTF8)
{
delete []szUTF8;
}
return strText;
}