一. 题目: 简单FTP实现二. 环境
运行的操作系统:Rad Hat Linux
网 络 平 台:一个终端做服务器,一个终端做客户端
机器的IP地 址:localhost(127.0.0.1)
三. 实验目的
采用TCP协议实现一个简单的文件传送程序
四. 实验内容及步骤
实验内容:
SOCKET支持TCP的流机制,通过该协议可以实现一个简单的文件传送,类似于FTP服务。
服务器程序首先启动,等待接收客户端连接。实现的文件传送指令包括:
get:从服务器获取一个文件
put:将文件传送到服务器
lss:显示服务器当前目录和文件
lsc:显示客户端当前目录和文件
cds:进行服务器目录操作
cdc:进行客户端目录操作
五 实验中的问题及心得
第一个遇到的问题就是传不同大小的文件时,有时对的,有时客户端死循环。经过多方查看,发现问题出在:若文件大小是缓冲区的整数倍时就错,而文件大小不是它的整数倍时是对的。怎样使文件正常传送结束,又不增加文件大小?用特殊字符是不能保证文件中不包含的,是不安全的。后来想到发送给接受端一个清空的缓冲作为文件结束标志(具体实现请看代码)。(我还想到另一种方法:接受端通过发送端发来的文件的大小来控制文件的结束。)
第二个遇到的问题就是传目录,因缓冲有大小,目录的大小也不定,若把目录一一放到缓冲中放满后再发送,必须保证目录不能被截取。所以要判断缓冲是否能容下要发送的目录。我的解决方法是一个缓冲放一个目录,最后以一个特殊字符为结束传送标志。还有一种方法:发送端把要传送的目录都写入一个文件,再把这个文件发送出去。接受端再读该文件并显示出来。
虽问题的解决方法很多,但应该哪种方法效率最高又最安全就用哪个。
二. 总结掌握的内容
掌握了一些unix编程技术,对网络的tcp/ip协议有了深刻的认识。若想要源代码发e_mail给我:lafsunboy@chinaren.com
五 实验中的问题及心得
第一个遇到的问题就是传不同大小的文件时,有时对的,有时客户端死循环。经过多方查看,发现问题出在:若文件大小是缓冲区的整数倍时就错,而文件大小不是它的整数倍时是对的。怎样使文件正常传送结束,又不增加文件大小?用特殊字符是不能保证文件中不包含的,是不安全的。后来想到发送给接受端一个清空的缓冲作为文件结束标志(具体实现请看代码)。(我还想到另一种方法:接受端通过发送端发来的文件的大小来控制文件的结束。)
第二个遇到的问题就是传目录,因缓冲有大小,目录的大小也不定,若把目录一一放到缓冲中放满后再发送,必须保证目录不能被截取。所以要判断缓冲是否能容下要发送的目录。我的解决方法是一个缓冲放一个目录,最后以一个特殊字符为结束传送标志。还有一种方法:发送端把要传送的目录都写入一个文件,再把这个文件发送出去。接受端再读该文件并显示出来。
虽问题的解决方法很多,但应该哪种方法效率最高又最安全就用哪个。
二. 总结掌握的内容
掌握了一些unix编程技术,对网络的tcp/ip协议有了深刻的认识。若想要源代码发e_mail给我:lafsunboy@chinaren.com
在客户端:
服务器端: