接收server发来的消息,大家帮我看看这样的情况应该怎样处理?(见内)

lanyu8111 2007-03-07 04:12:17
该程序接收server发来的1条消息,内容假设为"123456789",通过以下方法接收和处理()
void CWorkSocket::OnReceive(int nErrorCode) //CWorkSocket继承CAsyncSocket
{
TCHAR buff[4096+1];
int nRead = Receive(buff, 4096);
switch (nRead)
{
case 0: //接收数据数目为0个
Close();
break;

default: // 接收数据

int nUsed;
CConnectThread *pThread;
pThread = (CConnectThread *)AfxGetThread();
pThread->IncReceivedBytes(nRead);
// 添加数据
nUsed = m_Request.AddData(buff, nRead);
if (m_Request.IsComplete())
{
//OnHttpRequest(&m_Request)此方法为处理具体接收到的数据
((CHttpSrv*)(pThread->m_pWndServer))->OnHttpRequest(&m_Request);
m_Request.Reset();
}

break;
}
CAsyncSocket::OnReceive(nErrorCode);
}
----------------------------------------------------------
现在server把原来的1条消息变成2条发过来了,即第1条"1234567" ,第2条"89"
上面的方法可能只能接收其中的一条,然后就执行别的流程了,我怎样才能使其2条消息都能接收??(这样我才能取到完整的数据) 谢谢
也不知道我说清楚了没有,上面给的程序可能很简单不完整。
...全文
255 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanyu8111 2007-03-07
  • 打赏
  • 举报
回复
TCP
abomber2 2007-03-07
  • 打赏
  • 举报
回复
是什么协议 TCP/UDP?
lanyu8111 2007-03-07
  • 打赏
  • 举报
回复
case 0: //接收数据数目为0个
Close();
----------------------------------------
这个应该是程序没接收到任何数据的时候,才Close
菜牛 2007-03-07
  • 打赏
  • 举报
回复
case 0: //接收数据数目为0个
Close();
你接收一次数据就把Socket关闭了,那怎么行。一般是通过协议决定关闭与否,或者用其他条件来关闭Socket。

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧