因为需要监控服务器某个目录下是否产生了javacore文件,而又不想在服务器上跑代理程序,也就想了个“歪点子”:定时使用FTP服务,查看该目录下文件情况。
一开始使用了sun.net.ftp.FtpClient包,它是内置在JDK中的,使用起来还算简单,但是正是这种简单,导致它的功能并不强。比如仅提供列举文件清单,不提供文件相关信息。
后来发现有个org.apache.commons.net.ftp.FTP包,可以列举文件的很多属性,如大小,所有者等。于是二话不说就开始试用,当时直接就把原来的sun类干掉,直接用apache的类,却发现根本没法用,调用listFiles总是获得null,照搬网上的方法都不行。翻来覆去怎么都搞不定,网上关于此问题的解决方法似乎也不行。而且还很复杂。最后无奈之下只能回退,幸亏eclipse有history功能,节省了不少时间。
昨天晚上看了apache的FTP包介绍,似乎功能非常强,所以今天上午再次研究了一下,无意中发现网上有个伙计自己建的类里面有个把使用过程中的命令输出到控制台的做法,想到这样可以辅助查找原因。由此发现了问题所在:连接服务器后对服务器发送了SYST命令,服务器返回了错误:
SYST
215 UNIX Type: L8 Version: BSD-44
PORT 127,0,0,1,94,51
501 IP Address for data destination doesn't match client's. 由此想到连接服务器的方式问题,于是在连接之后调用一次enterLocalPassiveMode方法。
最终通过。
最后附上原帖地址:《使用org.apache.commons.net.ftp包开发FTP客户端,实现进度汇报,实现断点续传,中文支持》
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com