mfc的socket编程总是接收到乱码

switch(LOWORD(lParam)){caseFD_READ:WSABUFwsabuf;wsabuf.buf=newchar[200];wsabuf.len=20... switch(LOWORD(lParam))
{
case FD_READ:
WSABUF wsabuf;
wsabuf.buf=new char[200];
wsabuf.len=200;
DWORD dwread;
DWORD dwFlag=0;
SOCKADDR_IN addrFrom;
int len=sizeof(SOCKADDR);
CString str,strTemp;
WSARecvFrom(m_socket,&wsabuf,1,&dwread,&dwFlag,(SOCKADDR*)&addrFrom,&len,NULL,NULL);
str.Format("%s,%s",inet_ntoa(addrFrom.sin_addr),wsabuf.buf);
SetDlgItemText(IDC_E_C,str);
break;
}

我只发了一个整数 1 而已
展开
 我来答
百度网友0cc22311d
推荐于2016-05-21 · TA获得超过552个赞
知道小有建树答主
回答量:661
采纳率:100%
帮助的人:266万
展开全部
new char[200] 不清零里面的数据就是屯屯屯;
wsabuf.buf 需要ZeroMemory后,再使用的。
更多追问追答
追问
能说下具体怎么做吗?
追答
switch(LOWORD(lParam))
{
case FD_READ:
WSABUF wsabuf;
wsabuf.buf=new char[200];
ZeroMemory(wsabuf.buf,200)//就加一行,试试看
wsabuf.len=200;
DWORD dwread;
DWORD dwFlag=0;
SOCKADDR_IN addrFrom;
int len=sizeof(SOCKADDR);
CString str,strTemp;
WSARecvFrom(m_socket,&wsabuf,1,&dwread,&dwFlag,(SOCKADDR*)&addrFrom,&len,NULL,NULL);
str.Format("%s,%s",inet_ntoa(addrFrom.sin_addr),wsabuf.buf);
SetDlgItemText(IDC_E_C,str);
break;
}
654616566a
2015-04-29 · 超过12用户采纳过TA的回答
知道答主
回答量:18
采纳率:0%
帮助的人:12.1万
展开全部
wsabuf.buf=new char[200] 初始化
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
f3rell
2015-04-30 · TA获得超过162个赞
知道小有建树答主
回答量:350
采纳率:50%
帮助的人:158万
展开全部
缓冲区没有初始化
追问
怎么初始化
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式