文件传输协议课程设计.doc
《文件传输协议课程设计.doc》由会员分享,可在线阅读,更多相关《文件传输协议课程设计.doc(16页珍藏版)》请在沃文网上搜索。
1、计算机网络课程设计报告题目:文件传输协议的设计与实现目录1.课程设计目的和要求2.背景知识3.课程设计分析4.程序清单5.运行结果6.总结1. 课程设计目的和要求文件传输是各种计算机的网络的基本功能,文件传送协议是一种最基本的应用层协议。它是按照客户或服务器模式进行的工作,提供交式的访问。是INTERNRT使用最广泛的协议之一。以及深入了解计算机网络是建立在TCP/IP网络体系结构上。用 socket 编程接口编写俩个程序,分别为客户程序和服务器程序1 掌握TCP/IP 网络应用程序基本的设计方法;2 用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(ser
2、ver.c);3 撰写课程设计说明书。装订后的课程设计说明书不少于10面(含封面、任务书、目录、正文、参考文献、成绩评定表、封底)。2. 背景知识第一个FTP的RFC由A.K.Bhushan 在1971年提出,同时由MIT与Harvard实验实现,RFC 172提供了主机间文件传输的一个用户级协议。长期发展过程由于底层协议从NCP改变为TCP,RFC765定义了采用TCP的FCP. FTP协议在今天已经发展成熟,应用也越来越广很多开发的比较成熟的FTP客户端软件已经得到了广泛的应用.3. 课程设计分析 Server端 Client端创建ServerSocket对象,在某端口提供监听服务Clie
3、nt端 等待来自Client端的服务请求 接受Client端的请求,用返回的 创建Socket对象,向Server Socket建立连接 的监听端口请求 通过向Socket中读写数据来 通过向新的Socket中读写数与Client端通信 据来与Server端通信关闭Socket,结束与Server端的通信 关闭Socket,结束与当前 Client的通信,等待其他请求关闭ServerSocket对象,结束监听服务4.程序清单:1. 服务器源代码:#include #include #include using namespace std;#pragma comment(lib, wsock32
4、.lib)#define PORT 4523char buf_send1024;char buf_rec1024;SOCKET sockSrv;/socket初始化DWORD CreateSocket()WSADATA WSAData;/WSADATA结构被用来保存函数WSAStartup返回的Windows Sockets初始化信息if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)/WSAStartup完成winsock的初始化printf(socket initialize failed!n);return (-1);sockSrv=socket(AF_IN
5、ET,SOCK_STREAM,0);/定义为面向连接的,返回值送给sockSrvif(sockSrv=SOCKET_ERROR)printf(socket create failed ! n);WSACleanup();/中止Windows Sockets DLL的使用return(-1);SOCKADDR_IN addrSrv;/TCP/IP使用SOCKADDR_IN 定义地址addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);/计算机IP地址addrSrv.sin_port=htons(PORT);/协议端口号addrSrv.sin_family=
6、AF_INET;/地址所属协议簇/绑定端口if(bind(sockSrv,(struct sockaddr FAR *)&addrSrv,sizeof(addrSrv)=SOCKET_ERROR)printf(Bind Error);return(-1);return (1);int SendFileRecord(SOCKET datatcps,WIN32_FIND_DATA *pfd)/用于回复给客户端char filerecordMAX_PATH+32;FILETIME ft;FileTimeToLocalFileTime(&pfd-ftLastWriteTime,&ft);/将一个FIL
7、ETIME结构转换成本地时间 SYSTEMTIME lastwtime;/系统时间FileTimeToSystemTime(&ft,&lastwtime);/根据一个FILETIME结构的内容,装载一个SYSTEMTIME结构 char *dir=pfd-dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY?: ;sprintf(filerecord,%04d-%02d-%02d %02d:%02d %5s %10d %-20sn, lastwtime.wYear,lastwtime.wMonth,lastwtime.wDay,lastwtime.wHour,la
8、stwtime.wMinute,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);/搜索文件i
9、f(hff=INVALID_HANDLE_VALUE)/搜索无效返回值const char *errstr=cant list files!n;coutlist file error!endl;if(send(datatcps,errstr,strlen(errstr),0)=SOCKET_ERROR)couterror occurs when sending file list!endl;closesocket(datatcps);return 0;BOOL fMoreFiles=TRUE;/BOOL型,返回值为大于0的整数时为TRUE,返回值为0时候,为FALSE,返回值为-1时为ERRO
10、R。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
11、);if(send(datatcps,buf_send,r,0)=SOCKET_ERROR)printf(lost the connection to client!n);closesocket(datatcps);return 0;if(r1024)/文件传送结束break;closesocket(datatcps);printf(donen);return 1;DWORD ProcessCmd()if(listen(sockSrv,5)0)/监听信号coutListen error!endl;return(-1);coutListening for the requestendl;SOCK
12、ADDR_IN addrclient;/定义用于返回客户机端地址的结构int len=(sizeof(SOCKADDR_IN);while(1)SOCKET sockconn=accept(sockSrv,(SOCKADDR*)&addrclient,&len);/接受请求,产生新的套接字if(sockconn=INVALID_SOCKET)continue;else coutconnecting from clientendl;while(true)char filename20;memset(buf_rec,0,1024);memset(buf_send,0,1024);if(recv(s
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文件传输 协议 课程设计