C++多功能聊天室,网上找的代码,发送文件没问题,但是点击接收文件时就卡住了,希望大家帮我看看问题,下面是接收文件的代码

weixin_37959519 2017-04-18 12:11:20
UINT RecvFunc( LPVOID pParam )
{
CString strIP;
CString strPort;
CSendFileDlg * dlg=(CSendFileDlg *)pParam;

(dlg->GetDlgItem(IDC_BUTTON_RECEIVE))->EnableWindow(FALSE);//???
dlg->GetDlgItemText(IDC_IPADDRESS1, strIP);//??????
dlg->GetDlgItemText(IDC_PORT1, strPort);
dlg->cliSock.Create();


if(!dlg->cliSock.Connect((LPCTSTR)strIP,6000))//建立连接
{
AfxMessageBox("连接失败 !");
dlg->cliSock.Close();
(dlg->GetDlgItem(IDC_BUTTON_RECEIVE))->EnableWindow(TRUE);
dlg=NULL;
theRecv=NULL;
return -1;
}

SOCKET_STREAM_FILE_INFO StreamFileInfo1;
dlg->cliSock.Receive(&StreamFileInfo1,sizeof(SOCKET_STREAM_FILE_INFO));

CFile myFile;
myFile.Open(StreamFileInfo1.szFileTitle, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);//打开或创建文件
AfxMessageBox(StreamFileInfo1.szFileTitle);
UINT nSize=0;
UINT nData=0;

while (nSize < StreamFileInfo1.nFileSizeLow)
{
//byte * szBuf=new byte[1024];
char * szBuf=new char[1024];
nData=dlg->cliSock.Receive(szBuf, 1024);
myFile.Write(szBuf, nData);//将内容写到文件中
nSize+=nData;
}
SetFileTime((HANDLE)myFile.m_hFile,&StreamFileInfo1.ftCreationTime,
&StreamFileInfo1.ftLastAccessTime,&StreamFileInfo1.ftLastWriteTime);
myFile.Close();
SetFileAttributes(StreamFileInfo1.szFileTitle,StreamFileInfo1.dwFileAttributes);
dlg->cliSock.Close();
AfxMessageBox("接收完毕!");
(dlg->GetDlgItem(IDC_BUTTON_RECEIVE))->EnableWindow(TRUE);

theRecv=NULL;//??
dlg=NULL;
return 0;
}
...全文
435 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2017-04-19
  • 打赏
  • 举报
回复
建议使用异步方式
赵4老师 2017-04-18
  • 打赏
  • 举报
回复
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://bbs.csdn.net/topics/380167545

18,356

社区成员

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

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