我是用SOCKET和CArchive来传送接受文件的,但文件过大(例如100M)就会出错.提示内容是:"在对一未命名文件进行访问时发生了一个不明错误."
void CMsg::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
ar<<(WORD)m_bClose;
ar<<m_strText;
ar<<nMax;
if(data!=NULL)
{
ar.Write(data,nMax);//在此处出错
}
}
else
{
WORD wd;
ar>>wd;
m_bClose=(BOOL)wd;
ar>>m_strText;
ar>>nMax;
if(nMax>0)
{
data=new byte[nMax];
nMax=ar.Read(data,nMax);
}
}
m_msgList.Serialize(ar);
}
void CMsg::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
ar<<(WORD)m_bClose;
ar<<m_strText;
ar<<nMax;
if(data!=NULL)
{
ar.Write(data,nMax);//在此处出错
}
}
else
{
WORD wd;
ar>>wd;
m_bClose=(BOOL)wd;
ar>>m_strText;
ar>>nMax;
if(nMax>0)
{
data=new byte[nMax];
nMax=ar.Read(data,nMax);
}
}
m_msgList.Serialize(ar);
}
解决方案 »
- 7个多月没上CSDN了,2013要高考了,也没啥时间了上了,散分
- 怎样让tab控件的标签变为灰色?无法按下去?
- 拜求 MFC数据库编程 方面的电子书
- 判断可执行文件(.exe)是否执行完毕?
- 用C#怎样在一台机子上看到另一台机子的屏幕...
- vc初学者 api参数类型的问题
- 实时曲线 ^-^ SOS !
- 我想用DrawFocusRect来消除BUTTON上的焦点虚线,但是不知道怎么取得这个Rect结构
- MFC中的dialog窗口中使用MCIWNDCREATE及MCIWNDOPEN方法后,无法关闭窗口
- 数据库的小问题,大家进来看看啊!
- 急,请问两台机子可以共享adsl吗?谢谢
- 怎样取得屏幕上某一坐标位置的值或判断这一坐标位置的值是否改变。。。
大夸张了吧,8M,缺省的接收缓冲区: 8192bit 8k发送端是在文件过大的时候会自动分块发送,记住是自动,文件太大的话,在发送端只是会占用一会的100%CPU(如果一次性发送的话)
所以主要问题是接收端,对文件的访问我个人觉得用API来最好CreateFile,ReadFile,WriteFile就这么简单。
能具体些吗?谢谢!!