关于MFC C++编程,,下面的代码实在看不懂了,,麻烦大神把每行的注释写上!!小白在此谢谢啦
voidFileRecieve::OnBnClickedButtonSend()//接受传输文件{//TODO:在此添加控件通知处理程序代码AfxSocketInit(N...
void FileRecieve::OnBnClickedButtonSend() //接受传输文件
{
// TODO: 在此添加控件通知处理程序代码
AfxSocketInit(NULL);
CSocket sockClient; //创建空的客户机端套接字对象
sockClient.Create(); //创建套接字对象的底层套接字
CString szIP; //定义了一个CString类型的变量,名字为szIP
GetDlgItemText(IDC_EDIT_IPADDRESS,szIP);//把IDC_EDIT_IPADDRESS里取到的值,存放到szIP里
if(!sockClient.Connect((LPCTSTR)szIP, 800))//寻求连接,使用指定的IP地址和端口号将客户端连接到服务器。
{
AfxMessageBox("连接服务器失败!");
return;
}
SOCKET_STREAM_FILE_INFO StreamFileInfo;
sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));
CFile destFile(StreamFileInfo.szFileTitle, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
UINT dwRead = 0;
while(dwRead<StreamFileInfo.nFileSizeLow)
{
byte* data = new byte[1024];
memset(data,0,1024);
UINT dw=sockClient.Receive(data, 1024);
destFile.Write(data, dw);
dwRead+=dw;
}
SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime,
&StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime);
destFile.Close();
SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);
sockClient.Close(); //传输完毕,关闭套接字对象
AfxMessageBox("接收成功!");
}
我写的注释有不对的地方,欢迎更正
顺便说说里边的参数什么意思,谢谢 展开
{
// TODO: 在此添加控件通知处理程序代码
AfxSocketInit(NULL);
CSocket sockClient; //创建空的客户机端套接字对象
sockClient.Create(); //创建套接字对象的底层套接字
CString szIP; //定义了一个CString类型的变量,名字为szIP
GetDlgItemText(IDC_EDIT_IPADDRESS,szIP);//把IDC_EDIT_IPADDRESS里取到的值,存放到szIP里
if(!sockClient.Connect((LPCTSTR)szIP, 800))//寻求连接,使用指定的IP地址和端口号将客户端连接到服务器。
{
AfxMessageBox("连接服务器失败!");
return;
}
SOCKET_STREAM_FILE_INFO StreamFileInfo;
sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));
CFile destFile(StreamFileInfo.szFileTitle, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
UINT dwRead = 0;
while(dwRead<StreamFileInfo.nFileSizeLow)
{
byte* data = new byte[1024];
memset(data,0,1024);
UINT dw=sockClient.Receive(data, 1024);
destFile.Write(data, dw);
dwRead+=dw;
}
SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime,
&StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime);
destFile.Close();
SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);
sockClient.Close(); //传输完毕,关闭套接字对象
AfxMessageBox("接收成功!");
}
我写的注释有不对的地方,欢迎更正
顺便说说里边的参数什么意思,谢谢 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏10(财富值+成长值)
1个回答
展开全部
void FileRecieve::OnBnClickedButtonSend() //接受传输文件
{
// TODO: 在此添加控件通知处理程序代码
AfxSocketInit(NULL);
CSocket sockClient; //创建空的客户机端套接字对象
sockClient.Create(); //创建套接字对象的底层套接字
CString szIP; //定义了一个CString类型的变量,名字为szIP
GetDlgItemText(IDC_EDIT_IPADDRESS,szIP);//把IDC_EDIT_IPADDRESS里取到的值,存放到szIP里
if(!sockClient.Connect((LPCTSTR)szIP, 800))//寻求连接,使用指定的IP地址和端口号将客户端连接到服务器。
{
AfxMessageBox("连接服务器失败!");
return;
}
SOCKET_STREAM_FILE_INFO StreamFileInfo; //定义一个Socket流文件信息
sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));//接收流文件信息
CFile destFile(StreamFileInfo.szFileTitle, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
//根据接收的流文件信息中的文件名创建一个新的文件。
UINT dwRead = 0;//临时变量,用于标识接收是否完成
while(dwRead<StreamFileInfo.nFileSizeLow)//如果接收的字节数小于文件信息中指定的字节数则继续
{
byte* data = new byte[1024];//定义一个byte数组
memset(data,0,1024);//清空
UINT dw=sockClient.Receive(data, 1024);//接收1024个字节长度的文件内容,最终接收的长度由dw指定。
destFile.Write(data, dw);//将接收到的文件内容写入创建的文件中
dwRead+=dw;//临时变量增加写入长度
}
SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime,
&StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime);//按照接收文件信息来设置本地保存文件的时间信息。
destFile.Close();//关闭文件句柄
SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);//设置文件属性
sockClient.Close(); //传输完毕,关闭套接字对象
AfxMessageBox("接收成功!");
}
{
// TODO: 在此添加控件通知处理程序代码
AfxSocketInit(NULL);
CSocket sockClient; //创建空的客户机端套接字对象
sockClient.Create(); //创建套接字对象的底层套接字
CString szIP; //定义了一个CString类型的变量,名字为szIP
GetDlgItemText(IDC_EDIT_IPADDRESS,szIP);//把IDC_EDIT_IPADDRESS里取到的值,存放到szIP里
if(!sockClient.Connect((LPCTSTR)szIP, 800))//寻求连接,使用指定的IP地址和端口号将客户端连接到服务器。
{
AfxMessageBox("连接服务器失败!");
return;
}
SOCKET_STREAM_FILE_INFO StreamFileInfo; //定义一个Socket流文件信息
sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO));//接收流文件信息
CFile destFile(StreamFileInfo.szFileTitle, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
//根据接收的流文件信息中的文件名创建一个新的文件。
UINT dwRead = 0;//临时变量,用于标识接收是否完成
while(dwRead<StreamFileInfo.nFileSizeLow)//如果接收的字节数小于文件信息中指定的字节数则继续
{
byte* data = new byte[1024];//定义一个byte数组
memset(data,0,1024);//清空
UINT dw=sockClient.Receive(data, 1024);//接收1024个字节长度的文件内容,最终接收的长度由dw指定。
destFile.Write(data, dw);//将接收到的文件内容写入创建的文件中
dwRead+=dw;//临时变量增加写入长度
}
SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime,
&StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime);//按照接收文件信息来设置本地保存文件的时间信息。
destFile.Close();//关闭文件句柄
SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);//设置文件属性
sockClient.Close(); //传输完毕,关闭套接字对象
AfxMessageBox("接收成功!");
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询