簡單的CAsyncSocket服務器和客戶端程序。現在我正在使用tera term vt來進行本地測試。所以我在TT中輸入一個單詞,它被髮送到我的程序中,但我收到的字符串只是一堆中文字符。我使用MFC並以Unicode編譯。現在有趣的是,當我遵守多字節字符集時,字符串被接收到很好,所以我不確定這意味着什麼或者我可以改變以獲得結果。其中接收發生CSocket客戶端 - 服務器字符串接收到的是中文字符
void CClientSock::OnReceive(int nErrorCode)
{
TCHAR buf[1000];
memset(buf,'\0',1000);
CString recStr;
int bytesRead;
bytesRead = Receive(buf,1000);
switch(bytesRead)
{
case 0:
Close();
break;
case SOCKET_ERROR:
if(GetLastError() != WSAEWOULDBLOCK)
{
AfxMessageBox(L"Error occured");
Close();
}
break;
default:
buf[bytesRead] = '\0';
CString temp(buf);
recStr = temp;
CT2A Astring(recStr);
CString nString(Astring);
AfxMessageBox(nString);
}
CAsyncSocket::OnReceive(nErrorCode);
}
tera術語很可能使用多字節字符集而不是unicode發送您的應用程序數據。你可以用wireshark驗證這一點。如果你想要你的應用程序使用Unicode,你將需要一個測試應用程序,它將正確地向你發送一個Unicode字符串。 – Chad 2013-03-08 21:01:28
您能否添加發送部分(即客戶端)的代碼? – 2013-03-09 08:57:07
爲什麼要使用「CT2A Astring(recStr)」和「CString nString(Astring)」? – crea7or 2013-03-09 13:11:09