2024年3月11日发(作者:)
建议读者再看实验步骤之前,先阅读一下文章末尾的【注意事项】一节。这将有助
于更好的理解本章的实现。
一.单线程文件传输 (I):
·服务器端(负责发送数据)的实现
1. 建立一个基于对话框的工程Server,并在建立的过程中选择支持windows
socket。
2. 在对话框上添加“发送”按钮。
3. 为“发送”按钮添加事件BN_CLICKED的响应函数OnSend()。
void CServerDlg::OnSend()
{
// TODO: Add your control notification handler code here
CFileDialog fd(TRUE); // CFileDialog是MFC提供的一个用于选择文件
的对话框类
CString filename;
char fn[40];
CSocket listenSocket, socketSend;
CFile file;
long FileLength;
char* data;
存空间
if(IDOK==l()) // 启动用于选择文件的对话框
{
//选择了文件
filename=eName(); // 获取用户选择的文件的文件名
if(!(fer(0),CFile::modeRead| File::typeBinary))
{
AfxMessageBox(" 打开文件错误,取消发送!");
return;
}
strcpy(fn,fer(0));
}
else return; //按了取消按钮
(7000,SOCK_STREAM);
(5);
(socketSend);
FileLength = gth(); // 获取文件的长度
(&FileLength, 4); // 把要发送的文件的长度传送给对方
(fn,40); // 发送要传送的文件的文件名
data = new char[FileLength]; //分配一块和要传输的文件一样大小的内
ge(data, FileLength); //把文件中所有的数据一次性读入
data
}
(data, FileLength); //把data中的数据都发送出去
();
delete data;
();


发布评论