void CSrvAcceptSock::OnRecvFileInfo()
{
CSrvAcceptSock sock;
m_pDlgTcpSrv->m_ctrlProgressRecv.SetPos(0);
TcpFileInfo fileInfo;
fileInfo.fileLen=0;
int nSize=sizeof(fileInfo.fileName);
memset(fileInfo.fileName,0,nSize);
UINT nLen=sizeof(TcpFileInfo);
UINT unRXCharNum;
unRXCharNum=Receive(&fileInfo,nLen,0);
if(unRXCharNum>nLen||unRXCharNum<=0)
{
AfxMessageBox("接收数据出错!",MB_OK);
return;
}
m_nFileLen=fileInfo.fileLen;
m_pDlgTcpSrv->m_ctrlProgressRecv.SetRange32(0,m_nFileLen);
CFileDialog fileDlg(FALSE,NULL,fileInfo.fileName);
fileDlg.m_ofn.lpstrTitle="请命名并保存接收文件!";
fileDlg.m_ofn.lpstrFilter="Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0";
if(IDOK==fileDlg.DoModal())
{
m_pDlgTcpSrv->m_strRecvFileName=fileInfo.fileName;
if(!sockFile.Open(fileInfo.fileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary))
{
m_pDlgTcpSrv->m_ctrlRecvFile.SetCheck(0);
m_pDlgTcpSrv->m_bRecvFile=FALSE;
AfxMessageBox("创建或写入文件失败!");
int tcpPacketType;
tcpPacketType=TCP_FILE_ACCERROR1;
Send(&tcpPacketType,4,0);
m_bType=TRUE;
return;
}
else
{
int tcpPacketType;
tcpPacketType=TCP_FILE_ACCOK;
Send(&tcpPacketType,4,0);
m_pDlgTcpSrv->UpdateData(FALSE);
(m_pDlgTcpSrv->m_ctrlSendFile).EnableWindow(FALSE);
m_bFileData=TRUE;
}
}
else
{
int tcpPacketType;
tcpPacketType=TCP_FILE_ACCERROR2;
Send(&tcpPacketType,4,0);
m_bType=TRUE;
}
}接收到文件后,不弹出保存对话框,直接存储到D盘跟目录改了几次没改好 哎
if(IDOK==fileDlg.DoModal())直接改成true弹出AfxMessageBox("创建或写入文件失败!");为神马??