+ -
当前位置:首页 → 问答吧 → socket里面sendto和recvfrom的问题

socket里面sendto和recvfrom的问题

时间:2011-12-26

来源:互联网

套接口初始化的小弟我就不贴出来了。
代码如下:首先是sendto的代码:
  CString strBuffer;
strBuffer=m_strUser;
strBuffer+=_T(":");
strBuffer+=strText;
nLen=sendto(m_hScoket,(const char*)strBuffer.GetBuffer(0),sizeof(strBuffer),0, (sockaddr*)&m_addrBroadcast,sizeof(SOCKADDR_IN)); //其中m_addrBroadcast为一个广播的套接口
上面的strBuffer内容我用AfxMessageBox()函数输出显示,没有错误。

下面是recvfrom端的代码:
  char pBuffer[1024];
SOCKADDR_IN addr;
int addr_len=sizeof(SOCKADDR_IN);
int optval=1;
while(TRUE){
memset(pBuffer,0,nLen+1);
optval=recvfrom(pDlg->m_hScoket,(char FAR*)pBuffer,nLen+1,0,(sockaddr*)&addr,&addr_len);
}
pBuffer的内容我用AfxMessageBox()显示出来,会出现乱码。我不知道为什么,哪位大仙给我解答解答,感激不尽

作者: zjx8613   发布时间: 2011-12-26

optval=recvfrom(pDlg->m_hScoket,(char FAR*)pBuffer,nLen+1,0,(sockaddr*)&addr,&addr_len);
--->
optval=recvfrom(pDlg->m_hScoket,(char FAR*)pBuffer,1024,0,(sockaddr*)&addr,&addr_len);
同时检查sendto()函数的返回值nLen是否正确

作者: jixiang1983   发布时间: 2011-12-27

Unicode 还是 Anscii ?

作者: Vector_fz   发布时间: 2011-12-27

sizeof(strBuffer) 发送长度不对,应该是strBuffer.getlength()+ 1; Unicode 的话还要*2

作者: lanneret1234   发布时间: 2011-12-27