Unix环境下Ftp的编程实现
赵宪林
摘要:在Unix环境中,利用Ftp编程实现网络间大量数据文件的传输。结合实例阐述了Unix下Ftp的编程实现.
关键词:Unix、Ftp、文件传输
1 概述
对大批数据传输Ftp都是一个比较好的选择。下面就开发银行和电信系统实践的基础上,提供Unix下的F
tp的编程实现。
2 实现原理
Ftp即文件传输协议,它定义了在两台机器间传输文件的规程。有别于Ftp,Tftp比较简单。Tftp没有安全性和身份验证,而且最重要的区别是Tftp是基于数据报协议(UDP),不具有可靠性。Tftp用于已知的小型文件的传输。Ftp在机器之间维护两个逻辑连接,一个连接使用Telnet协议进行登录,另外一条连接用于数据传输。Ftp规定了许多用于两个进程间正确进行文件传输的应答。这些应答是由Ftp命令执行结果产生的。应答包括三个数字和一些信息。第一个数字表示五种类型应答,第二个数字包含了应答的附加信息,第三个数字更加详细的说明应答。第一个数字为1,表示一个肯定初步应答;2表示请求成功;3表示请求成功,缺乏额外的信息,如密码;4表示请求失败,可以继续发请求;5表示失败,不能再接收请求。详细的应答数字信息可以参阅RFC959。
Ftp传输文件时,支持不同的传输模式,有Ascii和Bin模式。在传输可执行文件和数据文件时最好使用Bin模式。
首先通过建立一个到对方主机的TCP/IP连接,用于传输登录信息和其他控制命令。由于Ftp是基于TCP之上的应用协议,建立的连接也必须是基于TCP的。然后传送Ftp用户和密码,这些必须是被连接方主机的合法帐号。登录成功以后就建立了到对方UnixFtpsever主机的有效连接。可以通过这个连接发送Ftp请求。如查看和改变目录,设置传输模式,上载或下载文件。
在进行数据文件的传输时,我们必须建立一个新的Socket,将Bind到一个新的服务端口,并通过Port指令告诉FTP Server这个服务位置,然后通过这个数据服务端口收发数据。
最后,退出并关闭控制连接。
3 编程环境说明
两台Unix主机间进行文件传输,必须在对等的Ftpsever设置Ftp用户和密码,对方才能登录。在这里,选用C语言作为编程语言。C语言在Unix环境下的程序开发中应用最多的。
4 程序实现
下面给出程序的伪代码:
(1)获得返回信息函数
int get_reply(int sd)
{…
tcp_recv(sd, &g_reply[i]) ;
/*从sd接收信息到g_reply*/
sscanf(g_reply, "%d", &code);
/*从返回信息中取到应答码*/