シンプルなCAsyncSocketサーバーとクライアントプログラム。現在、teratermvtを使用してローカルでテストしています。TTに単語を入力すると、プログラムに送信されますが、受信する文字列は単なる漢字の集まりです。私はMFCを使用しており、Unicodeでコンパイルしています。面白いのは、マルチバイト文字セットに準拠すると、文字列が正常に受信されるため、それが何を意味するのか、またはその結果を得るために何を変更できるのかがわかりません。
受信が発生するコード
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);
}