使用VC中的winsock控制元件做為服務器,接收來自客戶端的資料,如果按照字串的形式來接收,有的數字沒有辦法顯示為字串,導致丟失資料,如何使用GetData()函式按照位元組的方式來讀取資料,讀到的資料保存在一個緩沖區中,然后我按位元組將所有的資料讀出?
void CEFADlg::DataArrivalWinsock1(long bytesTotal)
VARIANT vtType,vtLen;
COleVariant Data;
vtType.vt = VT_UI1;
vtType.bVal = VT_BSTR; //總感覺是這里出了問題
vtLen.lVal = bytesTotal;
m_server.GetData(&Data, vtType, vtLen);
char *buf=Data.pcVal;
char *p=buf;
CString str,str1;
int i;
for(i=0;i<bytesTotal;i++)
{
str1.Format("%X ",*(p++));
str+=str1;
}
MessageBox(str);
實際運行的結果是這樣的
73 0 74 0 61 0 72 0 74 0 49 0 3f 0 49 0 3f 0 49 0 3f 0 49 0 3f 0
用網路除錯助手收到的內容是這樣的:
73 74 61 72 74 49 92 24 49 92 24 49 92 24 49 92 24 49 92 24 49 92 24 65 6E 64
網路除錯助手收到的資料是對的
用上位機接收的資料中間有0并且接收不全,應該在怎么解決?
想法是將資料按照位元組的方式接收,不是按字串,具體應該怎么實作?

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/106665.html
標籤:網絡通信
