WinSock接收数据问题,高手来接分了!
为什么当我定义rbuf接收数据的缓冲区为CString类型时,Recv总是返回0,然后马上又响应一次FD_Read事件,Recv返回-1,接收过程失败?
请问是什么原因?
BOOL CServerDlg::OnSendin() //响应FD_Read事件的函数
{
// strcpy(rbuf,"");
RecvOK=recv(SOCKET_ON,(LPTSTR)(LPCTSTR)rbuf,rbuf.GetLength(),0);
// RecvOK=recv(SOCKET_ON,rbuf,strlen(rbuf),0);
//AfxMessageBox("Sendin");
if(RecvOK!=SOCKET_ERROR)
{
// AfxMessageBox(rbuf);
m_EditLog.SetSel(-1,-1);
m_EditLog.ReplaceSel("服务器端正在接收数据!\n");
m_EditMsg.SetSel(-1,-1);
m_EditMsg.ReplaceSel(rbuf);
}
else
{
AfxMessageBox("Recv Faild!");
}
closesocket(SOCKET_ON);
m_EditLog.SetSel(-1,-1);
m_EditLog.ReplaceSel("SOCKET_ON已经关闭!\n");
return true;
}