一.概述
TCP/IP 协议是一个四层协议,它由应用层、传输层、网络层和链路层构成。TCP/IP 协议栈
的每一层都由许多协议构成,从而构成了一个协议簇。
应用层主要包括的协议有 Telnet、FTP、HTTP、SMTP/POP3 和 DNS 等。
传输层主要包括的协议有 TCP 和 UDP。
网络层主要包括 IP 和 IP 的附属协议。
数据链路层主要包括的协议有 ARP(地址解析协议)、RARP 协议、Ethernet 协议等。
FTP(File Transfer Protocol)协议主要用来在网络上进行文件传输。FTP 通讯除了有一个默
认的端口 21 外,还有其他端口,同城两个端口同时进行数据传输。一个是默认的端口(通
常为 21),主要进行控制连接,即进行命令协议及服务器端响应码的传输。另一个非标准端
口主要进行数据,上传下载文件等。
关于 FTP 协议和 FTP 命令的详细描述,参考《Visual C 网络通信编程实用案例精选》。
实现 FTP 协议,有两种方式,实用 WinInet API 和使用基本 Winsock。对于一般应用,用
WinInet 效率要高,而且简单。也可以用 Winsock 来编写,这样更加灵活,但是复杂度高且
需要对协议非常熟悉。
二.VC 开发
在项目中,为了开发效率,使用了 WinInet 的方式。
FTP 是 MFC 的 WinInet 支持的三个 Internet 功能(HTTP, gopher)之一,我们需要先创建一
个 CInternetSession 实例和一个 CFtpConnection 对象就可以实现和一个 FTP 服务器的通信。
不需要直接创建 CFtpConnection 对象,而是通过调用 CInternetsession::GetFtpConnection 来
完成这项工作。它创建 CFtpConnection 对象并返回一个指向该对象的指针。
要联接到 FTP 服务器,需要两个步骤,首先必须创建一个 CInternetSession 对象,用类
CInternetSession 创建并初始化一个或几个同时存在的 Internet 会话(session),并描述与代理
服务器的连接(如果有必要的话),如果在程序运行期间需要保持与 Internet 的连接,可以