java操作FTP时遇到的问题小结

今天在做java开发FTP文件上传时,遇到了一些问题。现在项目完成了,有时间总结一下。我用的第三方jar是:etdftpj-1.4.5.jar。

[b][size=large]问题一:java在获取FTP Client时,指定路径在Windows和Linux下的表示方式不同。[/size][/b]
Windows FTP Server:"/folder";
Linux FTP Server:"\folder"。

[b][size=large]问题二:FTP访问方式[/size][/b]
FTP是仅基于TCP的服务,它使用两个端口,一个命令端口,一个数据端口。通常情况下,命令端口号21,数据端口号20.但是由于FTP的访问方式不同,数据端口号不一定是20。
1、主动模式

[img]http://dl.iteye.com/upload/attachment/0069/3054/8e84ebfd-877f-3097-b113-6119e46ede2f.gif[/img]
第一步:客户端的命令端口与FTP服务器端的命令端口21建立连接,并发送命令"PORT 1027";
第二步:FTP服务器的命令端口给客户端的命令端口回一个"ACK";
第三步:FTP服务器发起一个从它自己的数据端口20向客户端先前指定的数据端口20的连接;
第四步:客户端给FTP服务器回一个"ACK"。
2、被动模式(PASV)

[img]http://dl.iteye.com/upload/attachment/0069/3056/f94de2e9-3d63-3833-bf23-b87fc9d55366.gif[/img]
第一步:客户端的命令端口与FTP服务器端的命令端口21建立连接,并发送命令"PASV";
第二步:FTP服务器返回一个命令"PORT 2024",告诉客户端用哪个端口侦听数据连接;
第三步:客户端初始化一个从自己的数据端口到FTP服务器指定的数据端口的连接;
第四步:FTP服务器给客户端回一个"ACK"。
[b]总结:[/b]
主动FTP:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 <- 服务器 20端口
被动FTP:
命令连接:客户端 >1023端口 -> 服务器 21端口
数据连接:客户端 >1023端口 -> 服务器 >1023端口
下面是主动与被动FTP优缺点的简要总结:
主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。

[b][size=large]问题三:实现在FTP服务器上移动文件[/size][/b]
rename(fileName, ../path/fileName);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值