18,356
社区成员
发帖
与我相关
我的任务
分享
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;
}