求教关于CAsyncSocket::OnReceive()的问题
最近在做一个任务..
就是写一个MFC程序作为IE与远程网站之间的中介~
也就是IE访问我的程序..我的程序将IE发来的包转发至别的网站(如www.163.com)..再将从www.163.com返回的包回馈给IE..以实现IE浏览网站的目的~
我使用MFC里的CAsyncSocket类~
创建了三个套接字..一个用于监听..一个用于与本地IE的连接..一个用于与外部网站的连接~
已经实现的功能有:
建立监听..接受IE访问的请求~
获取由IE发来的HTTP包..
建立远程连接..连接到外部网站..
将IE发来的HTTP包转发至外部网站~
但是遇到这样一个问题:
重载OnReceive函数用于接收外部网站过来的数据包~我用了一个固定长度的缓冲区去接收(m_szRecvBuf[2048];)
但是我观察了一下数据包过来的时候不是一次性接受完的~分大概两三次..而且也没办法预知它的长度~
我这样写
m_length = Receive(m_szRecvBuf, sizeof(m_szRecvBuf));
TRACE(m_szRecvBuf);
会直接弹框报错..挂程序~
请问有什么办法判断已经接收完本次数据包,进而可以将本次数据包转发给IE呢?