首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

socket里面sendto和recvfrom的有关问题

2012-03-05 
socket里面sendto和recvfrom的问题套接口初始化的小弟我就不贴出来了。代码如下:首先是sendto的代码:CStrin

socket里面sendto和recvfrom的问题
套接口初始化的小弟我就不贴出来了。
代码如下:首先是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()显示出来,会出现乱码。我不知道为什么,哪位大仙给我解答解答,感激不尽

[解决办法]
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是否正确
[解决办法]
Unicode 还是 Anscii ?
[解决办法]
sizeof(strBuffer)—》strBuffer.getlength();
[解决办法]
sizeof(strBuffer) 发送长度不对,应该是strBuffer.getlength()+ 1; Unicode 的话还要*2
[解决办法]

探讨

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

热点排行