1 / 15
文档名称:

实验一文件传输协议设计.docx

格式:docx   大小:145KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验一文件传输协议设计.docx

上传人:飞鱼2019 2022/5/30 文件大小:145 KB

下载得到文件列表

实验一文件传输协议设计.docx

相关文档

文档介绍

文档介绍:实验一:文件传输协议的设计与实现
目录
.实验设计目的和要求
.背景知识
.课程设计分析
.程序清单
.运行结果
.总结
.课程设计目的和要求
文件传输是各种计算机的网络的基本功能,文件传送协议是一种
最基本个 FILETIME 结构转换成本地时间
SYSTEMTIME lastwtime;// 系统时间
FileTimeToSystemTime(&ft,&lastwtime);// 根据一个 FILETIME 结构的内容,装载一个 SYSTEMTIME 结构
char *dir=pfd->dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY?”<DIR>":"";
sprintf(filerecord,"%04d-%02d-%02d %02d:%02d %5s %10d %-20s\n",
,
,
,
,
,
dir,
pfd->nFileSizeLow,
pfd->cFileName);
if(send(datatcps,filerecord,strlen(filerecord),0)==SOCKET_ERROR)〃发送回复失败
{ printf("Error occurs when sending file list!\n");
return 0;
}
return 1;
}
//发送主机文件目录
int SendFileList(SOCKET datatcps)
{
HANDLE hff;
WIN32_FIND_DATA fd; //获取和更改文件属性
hff=FindFirstFile("*",&fd);//搜索文件
if(hff==INVALID_HANDLE_VALUE)// 搜索无效返回值 {
const char *errstr="can't list files!\n"; cout<<"list file error!"<<endl;
if(send(datatcps,errstr,strlen(errstr),0)==SOCKET_ERROR) { cout<<"error occurs when sending file list!"<<endl; } closesocket(datatcps);
return 0;
}
BOOL fMoreFiles=TRUE;//BOOL型,返回值为大于 0的整数时为TRUE返回值为0时候,为FALSE, 返回彳!为-1时为ERROR
while(fMoreFiles) {
//发送此项文件信息
if(!SendFileRecord(datatcps,&fd))// 发送失败 { closesocket(datatcps); return 0; } //搜索下一个文件 fMoreFiles=FindNextFile(hff,&fd);
}
closesocket(datatcps);
return 1;
}
//发送数据
int SendFile(SOCKET datatcps,FILE* file)//发送文件
{
printf("sending file data..");
for(;;)
//从文件中循环读取数据并发送客户端
{
int r=fread(buf_send,1,1024,file);
if(send(datatcps,buf_send,r,0)==SOCKET_ERROR) {
printf("lost the connection to client!\n");
closesocket(datatcps);
return 0;
}
if(r<1024)// 文件传送结束
break;
}
closesocket(datatcps);
printf("done'n"); return 1;
}
DWORD ProcessCmd()
{ if(listen(sockSrv,5)<0)〃监听信号
{ cout<<"Listen error!"<<endl; return(-1); } cout<<"Listening for the request "<<endl;
SOCKADDR_IN addrclient;// 定义用于返回客户机端地址的结构 int len=(sizeof(SOCKADDR_IN));
while(1) {
SOCKET sockconn=accept(sockSrv,(SOCKADDR*)&