CString str1="編碼";
BYTE cSendBuf1[1024];
memcpy(cSendBuf1,str1.GetBuffer(str1.GetLength()),str1.GetLength()); //將cstring放入byte陣列
pSocket->Send(cSendBuf1,1024,0);
代碼如上,放置在定時器里一直發送Access Violation at address 和正被停用的激活背景關系不是最近激活的。
點擊中斷以后彈到 if (m_pCtrlSite == NULL)
::SetWindowText(m_hWnd, lpszString);
else
m_pCtrlSite->SetWindowText(lpszString);
}
的位置。
求大佬幫忙看看是什么問題
uj5u.com熱心網友回復:
初始化發送緩沖區試試看BYTE cSendBuf[n];
memset(cSendBuf, 0, sizeof(cSendBuf));
memcpy(cSendBuf, (LPCTSTR)str1, str1.GetLength() * sizeof(TCHAR));
uj5u.com熱心網友回復:
貌似是記憶體溢位,感謝樓上。但是傳過去的漢字只能顯示為一個小方框是為什么啊uj5u.com熱心網友回復:
可能是發送端和接收端的編譯模式不一樣? 一邊是UNICODE 一邊是多位元組?改為統一的格式,或者轉為UTF8試試看
uj5u.com熱心網友回復:
VS默認是unicode編碼.如果你的接收端也是VS寫的, 就看一下, 是否也是unicode編碼. 并且記得把你的char*緩沖區指標強制轉換成TCHAR* 再賦值給CString, 否則CString會自動做一次編碼轉換, 出現亂碼.
uj5u.com熱心網友回復:
頂樓上。。。。。。。。。。。。uj5u.com熱心網友回復:
看描述發送英文沒問題,那問題就出在漢字的格式上,看你發送方是mbcs還是unicode,只要接收方與發送方一致即可。uj5u.com熱心網友回復:
明顯編碼不匹配服務器端和服務端要約定一個文字編碼
不能這邊用gb2312編碼那邊用UTF-16解碼
至于字串長度怎么約定也要做好
是像BSTR那樣在字串之前加長度呢,還是約定00表示字串終結。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/55891.html
標籤:基礎類
上一篇:VC++MFC基于對話框根據用戶權限設定選單項的訪問控制
下一篇:C++中一些關于函式呼叫的問題
