频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

用Java构建稳定的Ftp服务器 (1)

来源:J2ME开发网 作者:asklxf 出处:巧巧读书 2006-10-12 进入讨论组

Ftp服务是最常用的网络服务之一,虽然在www风行的今天,Ftp已经远不如以前使用得广泛,但是在许多大学等科研单位,Ftp仍然是最常用的文件交换方式。

构建一个Ftp服务器要比构建一个Ftp客户端来得简单,因为服务器不需要复杂的图形界面。相比传统的C/C++,使用Java的多线程和网络编程能令我们更轻易地开发出稳定可靠的Ftp服务器。

Ftp协议简介
File Transfer Protocol文件传输协议,顾名思义,Ftp就是用于文件的传输,Ftp协议是基于TCP协议的,因此,在一个Ftp会话开始前,客户端和服务器必须首先建立一个TCP连接,这个TCP连接通常被称作控制连接,客户端通过此连接向服务器发送FTP命令,服务器处理命令后,将返回一个响应码。

每个命令必须有最少一个响应,如果是多个,要易于区别。FTP响应由三个数字构成,后面是一些文本。数字带有足够的信息,客户端程序不用知道后面的文本就知道发生了什么。文本信息与服务器相关,不同的用户,不同的服务器可能有不同的文本信息。文本和数字以空格间隔,文本后以换行符(\n)结束。如果文本多于一行,第一行内要有信息表示这是多行文本,最后一行也要标记为结束行。比如客户端发送获取当前目录的命令“PWD”,服务器的响应可能是:

200 /pub/incoming

响应码的三位数字都有明确的含义:

  • 1xx 确定预备应答,这类响应用于说明命令被接受,但请求的操作正在被初始化,在进入下一个命令前等待另外的应答。
  • 2xx 确定完成应答,要求的操作已经完成,可以执行新命令。
  • 3xx 确定中间应答,命令已接受,但要求的操作被停止。
  • 4xx 暂时拒绝完成应答,未接受命令,但错误是临时的,过一会儿可以再次发送消息,比如服务器忙。
  • 5yz 永远拒绝完成应答,此类响应码一般表示错误,如拒绝登陆。

第二位数字代表的意义:

  • x0x 格式错误;
  • x1x 此类应答是为了请求信息的;
  • x2x 此类应答是关于控制和数据连接的;
  • x3x 关于认证和帐户登录过程;
  • x4x 未使用;
  • x5x 此类应答是关于文件系统的;

常见的相应有:

  • 200 命令执行成功;
  • 202 命令未实现;
  • 230 用户登录;
  • 331 用户名正确,需要口令;
  • 450 请求的文件操作未执行;
  • 500 命令不可识别
  • 502 命令未实现

一个Ftp会话过程中,始终有一个控制连接,如果客户端请求文件,则会有一个数据连接,但FTP协议规定:只要关闭了控制连接,数据连接(如果有)也必须关闭。

不同的FTP服务器对FTP命令的支持程度可能不同,但是TCP标准定义了所有FTP服务器都必须实现的命令,我们的目标就是构建一个实现这个最小命令集的FTP服务器。

待续

URL查看 http://www.qqread.com/java/2006/10/d220870.html 更多文章 更多内容请看FTP服务器双核服务器技术网站服务器的选型专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章