使用 Socket 通信实现 FTP 客户端程序 FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用
FTP 的目标是提高文件的共享性和可靠高效地传送数据
在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命令
服务器收到命令后给予响应,并执行命令
FTP 协议与操作系统无关,任何操作系统上的程序只要符合 FTP 协议,就可以相互传输数据
本文主要基于 LINUX 平台,对 FTP 客户端的实现原理进行详尽的解释并阐述如何使用 C 语言编写一个简单的 FTP 客户端
FTP 协议 相比其他协议,如 HTTP 协议,FTP 协议要复杂一些
与一般的 C/S 应用不同点在于一般的 C/S 应用程序一般只会建立一个 Socket 连接,这个连接同时处理服务器端和客户端的连接命令和数据传输
而FTP 协议中将命令与数据分开传送的方法提高了效率
FTP 使用 2 个端口,一个数据端口和一个命令端口(也叫做控制端口)
这两个端口一般是 21 (命令端口)和 20 (数据端口)
控制 Socket 用来传送命令,数据 Socket 是用于传送数据
每一个 FTP 命令发送之后,FTP 服务器都会返回一个字符串,其中包括一个响应代码和一些说明信息
其中的返回码主要是用于判断命令是否被成功执行了
命令端口 一般来说,客户端有一个 Socket 用来连接 FTP 服务器的相关端口,它负责 FTP 命令的发送和接收返回的响应信息
一些操作如“登录”、“改变目录”、“删除文件”,依靠这个连接发送命令就可完成
数据端口 对于有数据传输的操作,主要是显示目录列表,上传、下载文件,我们需要依靠另一个 Socket来完成
如果使用被动模式,通常服务器端会返回一个端口号
客户端需要用另开一个 Socket 来连接这个端口,然后我们可根