为什么运行的时候会有错误?

tmac_roy 2013-01-22 11:43:01
UINT ReceiveDataThread(LPVOID lpParam)
{
CFileClientDlg* dlg=(CFileClientDlg*)lpParam;
CString str,str1,str2;
CSocket sockRecv;
sockRecv.Create();
str="192.168.2.121";
while(!sockRecv.Connect(str,4040)==0)
{
Sleep(50);
}
str2="F:\\test.jpg";
CFile file;
file.Open(str2, CFile::modeCreate | CFile::modeWrite);
BOOL bFileFail=FALSE;
DWORD dwTemp = 0;
sockRecv.AsyncSelect(0);
sockRecv.IOCtl( FIONBIO, &dwTemp);//变为阻塞方式
UINT uiLength;
sockRecv.Receive(&uiLength, 4);//接收发方(Server端)的文件大小
int iBufSize = 1024 * 5;
int iSize = iBufSize;
LPBYTE pBuf = new BYTE[iBufSize];
int iNumByte;
UINT uiTotal = 0;
while(uiTotal < uiLength)
{
if((int)(uiLength - uiTotal) < iBufSize)
iSize = uiLength - uiTotal;
int iCount=0;
while(iCount<iSize)
{
iNumByte = sockRecv.Receive(pBuf, iSize-iCount);
if(iNumByte == SOCKET_ERROR)
{
AfxMessageBox("接收错误!");
goto ExitLable2;
}
iCount+=iNumByte;
file.Write(pBuf, iNumByte);
}
uiTotal += iCount;//以实际接收字节为准
}
AfxMessageBox("接收文件成功!");
bFileFail=TRUE;
ExitLable2:
delete[] pBuf;
file.Close();
if(!bFileFail)
{
CFile::Remove( str2 );
}
sockRecv.Close();
return 0;
}

调试的时候到sockRecv.Create();就错了,好像是内存有问题,什么该内存不能为read。
...全文
60 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tmac_roy 2013-01-22
  • 打赏
  • 举报
回复
用的静态链接库,改成动态就行了。。。
hdg3707 2013-01-22
  • 打赏
  • 举报
回复
你按静态编绎时改一下字符集试试,正常情况下动态库和静态库编绎应该是一样的

18,356

社区成员

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

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