刚刚接触Socket编程,对其中的了解对不是很多,所以遇到了不少麻烦,在Send一条消息后,Receive到的居然只有一个字符,而且当Send的内容是中文时,Receive到的全是乱码。。。后来发现原来是因为VS2010采用的是Unicode编码机制,而Receive接收的是char *类型的字符串,最后墨迹了半天,终于解决了问题!
char pBuf[1024] = {0};
int nReceived = m_sConnectSocket.Receive(pBuf,1024);
if(nReceived != SOCKET_ERROR)
{
CString strReceived;
strReceived.Format(_T("%s"),pBuf);
m_listReceived.AddString(strReceived);
UpdateData(FALSE);
}
Receive代码片段,最后还有一个得修改的是Send中的发送长度:
nLen = m_strMsg.GetLength();
nSent = m_sConnectSocket.Send((void *)m_strMsg.GetBuffer(0),nLen * 2);
字符问题真是各种揪心呀。。。