[跪求解决办法]VC6 下很平常的方法 到 VC 7.1 为何不好使了.
公司最近要将原来VC6 的一个程序升级到 VS2003 下的 VC7.1
下面如此简单的代码竟然不好用了,我搞了3天还没解决(最可气是在VC6下一切正常)
主要问题是 CSocket() 榜定 CArchive 后 m_pIn->IsBufferEmpty() 老是 TRUE
---代码如下
BOOL result = TRUE;
char byte;
char buf[2048];
memset(buf,' ',sizeof(buf));
m_pFile = new CSocketFile(m_pSock); //m_pSock Type CSocket()
m_pIn = new CArchive(m_pFile,CArchive::load);
m_pOut = new CArchive(m_pFile,CArchive::store);
TRY
{
if(m_pIn->IsLoading())
{
WORD i=0;
//循环一次取一字节
do
{
m_pIn->Read((void*)&byte,1);
buf[i]=byte;
i++;
}while(!m_pIn->IsBufferEmpty()&&i<len); //这里比较郁闷 m_pIn->IsBufferEmpty() 老是 TRUE
memcpy(receivebuf, buf,len);
}
else
result = FALSE;
}
CATCH(CFileException,e)
{
//略
}
END_CATCH
//向会发数据代码略
return result;
}
-------------------------------
这样的代码比较多,而且有很多都是继承 CSocket() 在 OnReceive 读取的
请问各位大侠是否有,解决办法(100 分不购可以在加,我还有 800 多分)
如果 用 CAsyncSocket 或 C++ socket 函数直接读没问题
礼拜天了都我还在加班解决这个问题,大家可怜可怜我吧.
不会帮忙顶也好