//文件收发请求包
struct FILEREQUEST
{
int ID;
CString m_FileName;
CString m_FileExt; //文件扩展名
DWORD m_FileSize;
};char *buf;
buf = new char (sizeof(char) * sizeof(FILEREQUEST));
//省略。
recv(s,buf, sizeof(char) * sizeof(FILEREQUEST),0);//到这里都一切正常//这里就不正常了ID收到为正常数据,文件大小也收到了正常数据,就两个CString 变量收到的是“” 空字符
//这是啥原因啊??CString 与 char 的问题么??而且到了这里会出现内存访问出错的提示
//FileMove.exe 中的 0x6318dffe (mfc90ud.dll) 处未处理的异常: 0xC0000005: 读取位置 0x002fc070 时发生访问冲突
//CSimpleStringT& operator=( _In_ const CSimpleStringT<BaseType, !t_bMFCDLL>& strSrc )这就是出错的函数
FILEREQUEST fileRequest;
fileRequest.ID = ((FILEREQUEST*)buf)->ID;
fileRequest.m_FileName = ((FILEREQUEST*)buf)->m_FileName;
fileRequest.m_FileExt = ((FILEREQUEST*)buf)->m_FileExt;
fileRequest.m_FileSize = ((FILEREQUEST*)buf)->m_FileSize;//这就是上面出错函数的代码,,atlsimpstr.h 系统自带的函数,我看不太懂
CSimpleStringT& operator=( _In_ const CSimpleStringT<BaseType, !t_bMFCDLL>& strSrc )
{
CStringData* pSrcData = strSrc.GetData();
CStringData* pOldData = GetData();
if( pSrcData != pOldData)
{
if( pOldData->IsLocked() || pSrcData->pStringMgr != pOldData->pStringMgr )
{
SetString( strSrc.GetString(), strSrc.GetLength() );
}
else
{
CStringData* pNewData = CloneData( pSrcData );
pOldData->Release();
Attach( pNewData );
}
} return( *this );
}
不明原因,求解~~~
解决方案 »
- 做两个不同目录下怎样的比较方式好一点呢?
- 如何驱动串口打印机?
- 关于读写Outlook Express通讯录的问题
- 关于项目模块设计合作问题,急!!!!
- 请教ADO中的OLE DB provider for ODBC driver出现的问题!
- 怎么在.rgs注册脚本文件中,引用系统路径system32,是哪个变量标志它?
- 关于如何获得文件夹的路径的问题!
- 如何用vc将word文档写进数据库一个字段(BLOB类型)当中??
- 如何分别获得24位图像中每个像素的R、G、B值??
- 为什么现在做JAVA的薪水要比做VC的高啊??????
- 怎样取得一个网页中指定的url地址
- Server端,建立连接之后,可以关闭Listening socket吗?
if( pOldData->IsLocked() || pSrcData->pStringMgr != pOldData->pStringMgr )
这一句~~~先出门了。。中午回来看,,求大神指点~~~
{
int ID;
CString m_FileName;
CString m_FileExt; //文件扩展名
DWORD m_FileSize;
};不要用CString,用char chFileName[260],CString是对象类型,不能用于网络传输
struct FILEREQUEST
{
int ID;
int nFileNameLen;
char m_FileName[260];
int nFileExtLen;
char m_FileExt[260];
DWORD m_FileSize;
};