vs2005 UDP通信只能接收一个字符?解决方案

vs2005 UDP通信只能接收一个字符?
UDP本机通信测试,用matlab发送报文,这边接收,发现发一个字符接收是正确的,发多个字符,接收到的就是乱码。
matlab发送报文:fprintf(u,'%s','abc');

以下是vc写的接收程序部分:
C/C++ code
void CcmSocket::OnReceive(int nErrorCode)
{
    // TODO: 在此添加专用代码和/或调用基类
    WCHAR sBuf[255]={0};//定义接收数据的缓冲区
    CString sRemoteIP,buf;  //远端IP
    UINT nRemotePort=41300;   // 远端端口
    sRemoteIP="127.0.0.1";
    //接收数据
    ReceiveFrom(sBuf,254*sizeof(WCHAR),sRemoteIP,nRemotePort);
    //需要对接收的数据做判断处理
    
    CMultiThreadDlg *pDLG = (CMultiThreadDlg*)AfxGetMainWnd();
    pDLG->m_edit.ReplaceSel(sBuf);//在编辑框显示
    buf.Format(_T("%s"),sBuf);

不清楚是matlab发送的报文有问题,还是vc写的接收程序问题,请高手指导,谢谢!

------解决方案--------------------
那应该是编码问题,你先把收到的数据按二进制检查一下,看看是不是和发送的一样
------解决方案--------------------
254*sizeof(WCHAR)
是有问题的,这里应该表示字节的长度,而且是255
应该是255*2*sizeof(BYTE)
------解决方案--------------------
你明明发的是窄字符,却要用unicode版本来显示,怎能不乱?

// TODO: 在此添加专用代码和/或调用基类
char sBuf[255]={0};//定义接收数据的缓冲区
CString sRemoteIP,buf; //远端IP
UINT nRemotePort=41300; // 远端端口
sRemoteIP="127.0.0.1";
//接收数据
ReceiveFrom(sBuf,254*sizeof(char),sRemoteIP,nRemotePort);
//需要对接收的数据做判断处理

CMultiThreadDlg *pDLG = (CMultiThreadDlg*)AfxGetMainWnd();
pDLG->m_edit.ReplaceSel((CString) sBuf);//在编辑框显示
// buf.Format(_T("%s"),sBuf);
------解决方案--------------------
fwprintf
探讨

哥哥姐姐们,怎么用matlab发送unicode编码字符?fprintf(u,'%s','abc');这么是窄字符的