java ftpclient quit_java ftpclient问题 | 学步园

java ftpclient问题(sun.net.ftp.FtpClient)

1 sun.net.ftp.FtpProtocolException: PORT :501 PORT not allowed after EPSV ALL, active mode off 很多ftp服务器传输时采用被动模式,可用命令ftpClient.sendServer("PASV")解决。后面不要int reply = ftpClient.readServerResponse();否则问题依旧。

2 java.net.SocketException: Connection reset 导致此问题的出现是因为下载还没结束,就提前关闭客户端。也可以这样理解:在客户端与服务端建立了一个流通道,这个流通道一端进,一端出,在一端持续进的时候,你把出的一端给关了,这时就会报connection reset异常。

当然,正常应当在流进结束以后,可往往在读一个大文件的时候,如何判断已结束呢?当然可以用命令ftpClient.sendServer("QUIT")解决。

/*

FTP远程命令列表 USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT PASS PASV STOR REST CWD STAT RMD XCUP OPTS ACCT TYPE APPE RNFR XCWD HELP XRMD STOU AUTH REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ QUIT MODE SYST ABOR NLST MKD XPWD MDTM PROT

*/

/*

在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上rn ftpclient.sendServer("XMKD /test/bbrn"); //执行服务器上的FTP命令 ftpclient.readServerResponse一定要在sendServer后调用 nameList("/test")获取指目录下的文件列表 XMKD建立目录,当目录存在的情况下再次创建目录时报错 XRMD删除目录 DELE删除文件

*/

FtpClient ftpClient = new FtpClient();

// 创建FtpClient对象 ftpClient.openServer(server);

// 连接FTP服务器

ftpClient.login(user, password);

if (path.length() != 0) ftpClient.cd(path);

ftpClient.binary();

// ftpClient.sendServer("PASV");

// int reply = ftpClient.readServerResponse();

TelnetInputStream is = ftpClient.get("smit.log");

// TelnetInputStream is = ftpClient.list();

// TelnetInputStream is=ftpClient.nameList(path);

int c;

while ((c = is.read()) != -1) {

System.out.print((char) c);

}

is.close();

// ftpClient.closeServer();

// 退出FTP服务器

// ftpClient.sendServer("GET smit.logrn");

int reply = ftpClient.readServerResponse();

ftpClient.sendServer("QUITrn");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值