Java实现简单的FTP服务器

前言

学习了Java网络编程了,为了检验自己的学习程序和熟悉相关的知识点,为此,使用Java Socket编程实现了一个简单的FTP服务器。以下记录了自己整个开发的流程。

FTP协议

自己平时也有用过ftp协议进行文件的传输,知道FTP协议的默认端口是21,可对于底层是如何实现,客户端与服务端之间的通信时如何进行的并不是了解,为此,专门查看了TCP/IP详解协议卷中对FTP的描述,理解FTP的工作机制。

工作机制概要

FTP是文件传输协议,与大多数其他的TCP应用不同,它在客户进程和服务器进程之间使用两个TCP连接,一个控制连接,默认使用TCP的21端口,它一直持续到客户进程与服务进程之间的通信完成为止,另一个按需可以随时创建和撤销的数据连接,用于数据传输,这条TCP连接是按照与控制用的连接相反的方向建立的,即客户端创建ServerSocket,而服务端创建Socket,而文件传输的处理过程如下:
文件传输的处理过程

数据表示

FTP协议规范提供了控制文件传送与存储的多种选择。在以下四个方面中的每一个方面须作出一个选择。
1. 文件类型
1. ASCII码文件类型(默认选择)文本文件已NVT ASCII码形式在数据连接中传输。这要求发方将本地文本文件转换成NVT ASCII码形式,而收方则将NVT ASCII码再还原成本地文件。其中用于NVT ASCII码传输的每行都带有一个回车,而后是一个换行。这意味着收方必须扫描每个字节,查找CR、LF对。
2. EBCDIC文件类型,该文本类型传输方式要求两端都是EBCDIC系统
3. 图像文件类型(也称为二进制文件类型),数据发送呈现为一个连接的比特流。通常用于传输二进制文件。
4. 本地文件类型,该方式在具有不同字节大小的主机间传输二进制文件。每一字节的比特数由发方规定。对使用8bit字节的系统来说,本地文件以8bit字节传输就等同于图像文件传输。
2. 格式控制,该选项只对ASCII和EBCDIC文件类型有效
1. 非打印(默认选择)ÿ

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值