CString GetMode(SOCKET sock,SOCKADDR_IN address,WSAEVENT eventLink)
{
CString at,recv;
char *data;
char recvbuf[50]={0};
SOCKADDR_IN recvaddr;
int nbSize,nSize = sizeof(recvaddr),iError;
at = _T("AT+MODEL=?\r\n");
data =(LPSTR)(LPCTSTR)at;
sendto ( sock,data,at.GetLength(), 0, (SOCKADDR *) &address, sizeof (SOCKADDR_IN));
iError = WSAWaitForMultipleEvents(1, &eventLink, FALSE, 1000, FALSE); //1秒內等待回傳值
WSAResetEvent(eventLink); //復位事件為無信號狀態
if(iError == WSA_WAIT_FAILED || iError == WSA_WAIT_TIMEOUT)
return _T("");//直接回傳
if((nbSize=recvfrom (sock,recvbuf,sizeof(recvbuf),0,(SOCKADDR FAR *) &recvaddr,&nSize)) == SOCKET_ERROR)
return _T("");
recv.Format(_T("%d"),recvbuf[7]-0x30);
return recv;
}
uj5u.com熱心網友回復:
你處理資料socket都是用char陣列,然后自己再轉換編碼格式等uj5u.com熱心網友回復:
電腦記憶體或檔案內容或傳輸內容只是一個一維二進制位元組陣列及其對應的二進制地址;人腦才將電腦記憶體或檔案內容或傳輸內容中的這個一維二進制位元組陣列及其對應的二進制地址的某些部分看成是整數、有符號數/無符號數、浮點數、復數、英文字母、阿拉伯數字、中文/韓文/法文……字符/字串、匯編指令、函式、函式引數、堆、堆疊、陣列、指標、陣列指標、指標陣列、陣列的陣列、指標的指標、二維陣列、字符點陣、字符筆畫的坐標、黑白二值圖片、灰度圖片、彩色圖片、錄音、視頻、指紋資訊、身份證資訊……
uj5u.com熱心網友回復:
at = _T("AT+MODEL=?\r\n");內容要轉換為char型別
uj5u.com熱心網友回復:
CString ===> CStringAuj5u.com熱心網友回復:
對于 ANSI 和 Unicode 的使用很多人總是用亂,什么時候該用什么時候不用自己不清楚。比如你這個,你發送的內容,如果硬要區分 ANSI 和 Unicode,那就是兩組不同的資料流了。你的服務器端有對應的處理嗎?以及發送的資料有告訴服務器這是個 Unicode 嗎?如果你有做這些的話,你可以隨意發。不過,CString Unicode 版的 GetLength() 始侄訓傳的是字符數,而不是位元組數。即便你的服務器端支持 Unicode,你發的資料也不完整。Windows 編程,使用 _T 或 TEXT固然 是個好習慣,但那大都針對 Windows 平臺內部使用。但必要的時候,比如 Windows API 并非都有兩套,有些引數或資料結構要求必須是 ANSI 或必須是 Unicode,或者比如為了跨平臺,比如網路傳輸的時候,這種情況下,有些資料格式通常是定死的 ANSI 或 Unicode 其一,顯式的寫明 char 或 WCHAR 是必須的,反而不能用 _T、TEXT 和 TCHAR。uj5u.com熱心網友回復:
網路資料傳輸跟UNICODE,ANSI沒關系,都是以位元組流方式傳輸的.uj5u.com熱心網友回復:
同樓上,這個肯定是可以的,網路上傳輸的總是位元率uj5u.com熱心網友回復:
其實只是你寫代碼不看檔案,sendto指定的是位元組數 而不是字符個數
話說你沒用utf16時 這么干也會少發了末尾的'\0'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/118161.html
標籤:基礎類
上一篇:程式自動更新更新包問題。
下一篇:vc++6.0程式報錯。
