2022年c语言小项目:用Socket编程实现FTP .pdf
《2022年c语言小项目:用Socket编程实现FTP .pdf》由会员分享,可在线阅读,更多相关《2022年c语言小项目:用Socket编程实现FTP .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、题目:用 Socket 编程实现 FTP 用 Socket 编程实现 FTP 一、目的和意义(功能描述)学习了 TCP/IP 这门课,接触最多的是用Windows Sockets 编程来实现一些功能。 因此在熟悉了Windows Sockets 的编程思想后,我觉的会很容易实现一个FTP的客户应用程序。它能够登录FTP服务器,并从服务器端下载数据。数据同步传输系统既适合于服务器端的目录遍历,又适合客户端对服务端的上传文件和下载文件。运用 Socket( 套接字 ) 接口和使用 FTP(文件传输协议)来实现客户端和服务器端之间信息的交互。该数据传输平台分为两个模块:服务器端模块和客户端模块。客户
2、服务器程序通过对编程语言 Visual C+6.0中的调用来实现利用TCP/IP 协议中的 FTP 协议和封装在NMFTP 内的 Socket 接口进行客户端与服务器连接,并完成数据同步工作,例如:上传、下载、浏览、查询、对服务器目录与文件的管理以及执行远程命令等。服务器端程序则持续的监听网络。当接受到客户端的Socket ,服务器程序提供相应的服务。网络通信模块使用 POP3 控件来实现客户端与服务器的信息交流。函数功能和流程如下: (1)首先创建一个CFtpclient的类的实例。(2)用 LogOnToServer() 函数登录到指定的FTP服务器,允许非匿名用户和匿名两种登录方式,默认
3、的端口为 21. (3)使用MoveFile()函数来上传下载数据文件,其中第一个参数是本地地址,第二个参数是远程地址,文件传输选用二进制模式。注意,文件传输使用同步模式。(4)可以使用 Ftpcommand()函数来执行FTP指令,包括常用的“CWD/home/mydir”来改变远程服务器上的地址,并处理服务器返回的应答。当这种方式不适用的时候,还可以使用WriteStr()函数和 ReadStr()函数向远程服务器发送指令,并自己解释返回的应答。(5)当所有的文件传输完成之后,使用LogOffServer函数来断开与远程服务器的连接。二、基本原理它的原理也相当的简单,客户端程序实现一个命令
4、行或图形界面,将用户命令翻译成 FTP 命令,并发送给服务器端程序。服务器端程序响应 FTP 命令,并将操作成功与否的信息以 FTP 响应形式返回给客户端程序。 双方遵守 FTP 协议,完成文件传输服务。就是利用 MFC 提供的 CSocket 类和 CAsyncsocket 类实现一个客户 / 服务器模式的数据通信模式,使用CSocketFile类和 CArchive 类来读写数据。它很好的实现了所有的功能,提供了简洁实用的接口。三、详细设计Windows Sockets 实现,一个Windows Sockets 实现是指实现了Windows Sockets 规范所描述的全部功能的一套软件。
5、 一般通过 DLL文件来实现。 Windows环境下进行网络程序设计的最基本方法是应用Windows Sockets 来实现,通过使用MFC 提供的 Windows Sockets类,能够很好的完成FTP的功能。连接管理:数据连接有 3 大用途:(1) 从客户向服务器发送一个文件(2) 从服务器向客户发送一个文件(3) 从服务器向客户发送文件或目录列表。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - 每一个数据连接对传输一个文
6、件或目录序列都要建立一个新的连接。(1) 客户发出命令要求建立数据连接(2) 客户在客户主机上未数据连接选择一个固定的端口号(3) 客户使用 PORT命令从控制连接上把端口号发给服务器。(4) 服务器在控制连接上接收端口号,并向客户端主机上的端口发出主动打开,服务器的数据连接使用端口 21。基本套接字为了更好说明套接字编程原理,给出几个基本的套接字,在以后的篇幅中会给出更详细的使用说明。1、创建套接字socket() 功能:使用前创建一个新的套接字格式: SOCKET PASCAL FAR socket(int af,int type,int procotol); 参数: af: 通信发生的区
7、域type: 要建立的套接字类型procotol: 使用的特定协议2、指定本地地址bind() 功能:将套接字地址与所创建的套接字号联系起来。格式: int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int namelen); 参数: s: 是由 socket()调用返回的并且未作连接的套接字描述符(套接字号)。其它:没有错误,bind() 返回 0,否则 SOCKET_ERROR 地址结构说明:struct sockaddr_in short sin_family;/AF_INET u_short sin_port;/
8、16位端口号,网络字节顺序struct in_addr sin_addr;/32位 IP 地址,网络字节顺序char sin_zero8;/保留 3、建立套接字连接connect()和 accept() 功能:共同完成连接工作格式: int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,int namelen); SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen); 参数:同上4、监听连接listen() 功能:
9、用于面向连接服务器,表明它愿意接收连接。格式: int PASCAL FAR listen(SOCKET s, int backlog); 5、数据传输send() 与 recv() 功能:数据的发送与接收格式: int PASCAL FAR send(SOCKET s,const char FAR * buf,int len,int flags); int PASCAL FAR recv(SOCKET s,const char FAR * buf,int len,int flags); 参数: buf: 指向存有传输数据的缓冲区的指针。6、多路复用select() 功能:用来检测一个或多个套
10、接字状态。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 格式: int PASCAL FAR select(int nfds,fd_set FAR * readfds,fd_set FAR * writefds, fd_set FAR * exceptfds,const struct timeval FAR * timeout); 参数: readfds:指向要做读检测的指针writefds:指向要做写检测的指针except
11、fds:指向要检测是否出错的指针timeout:最大等待时间7、关闭套接字closesocket() 功能:关闭套接字s 格式: BOOL PASCAL FAR closesocket(SOCKET s); FTP 下载文件流程FTP 服务端和客户端之间存在两中连接:一中用于传输 FTP 命令(命令必须由客户端主动发起),连接始终存在;另一中用于向客户端传输数据,每当要传输文件或目录文件列表信息时则建立一个数据连接,数据传输完毕立即断开。数据连接有两种建立方式:客户端监听某端口,服务器主动发起数据连接。服务器监听某端口,客户端主动发起数据连接。下载文件之前首先需要登陆,登陆的状态图如图 2 所
12、示。如果前面发送的命令均得到成功响应,则表示服务器数据准备完毕。下面需要做的是与服务建立数据连接,开始接受数据,并将接收到的数据保存在本地文件中,直到接收完毕后断开数据连接,下载完毕。通过访问全局变量获得 FTP 服务器 IP 地址和端口号,以及登陆的用户名和密码,登陆服务器。为了实现 FTP下载文件能成功,我觉得用代码和图片解释比较好,但文字描述不清楚,所以用代码的比较多,虽然觉得不好,但我只能这样。流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - -
13、 - - - - - - - 流程图1(一)FTP 客户端的主要代码1.头文件#include stdafx.h #include ListItem.h #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE=_FILE_; #define new DEBUG_NEW #endif 2. 创建 ParseLine()函数BOOL CListItem:ParseLine(CString strLine) if(strLine.IsEmpty() return FALSE; char ch = strLine.GetAt(0); if(ch = d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年c语言小项目:用Socket编程实现FTP 2022 语言 项目 Socket 编程 实现 FTP
限制150内