我上个月用sun.net.ftp.FtpClient开发了一个ftp客户端,服务端用serv-u6.0,发现有个奇怪的现象,全都在本机做测试非常正常,但是如果服务端在另一台电脑上的话连接就会很慢了。经测试,都是21秒多,后来发现了罪魁,就是OutputStream os = ftpClient.put(文件名); 21秒全让它给吃了,但我又没有别的办法,(说明:我用其他ftp工具都非常快)求各位高手指点一下迷津,先多谢各位了!我搞这个问题都一个多月了,快郁闷死了!
FtpClient ftpClient = new FtpClient();
try {
ftpClient.openServer(host);
ftpClient.login(username, password);
if (serverpath != null && serverpath.length() != 0) {
ftpClient.cd(serverpath);
}
ftpClient.binary();
File file_in = new File(localfile);
FileInputStream is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
OutputStream os = ftpClient.put(serverfile);
while ( (c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
os.close();
ftpClient.closeServer();
}
catch (Exception e) {
e.printStackTrace();
}
FtpClient ftpClient = new FtpClient();
try {
ftpClient.openServer(host);
ftpClient.login(username, password);
if (serverpath != null && serverpath.length() != 0) {
ftpClient.cd(serverpath);
}
ftpClient.binary();
File file_in = new File(localfile);
FileInputStream is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
OutputStream os = ftpClient.put(serverfile);
while ( (c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
os.close();
ftpClient.closeServer();
}
catch (Exception e) {
e.printStackTrace();
}
FileInputStream is = new FileInputStream(file_in);
BufferedInputStream fis= new BufferedInputStream(file_in,256) ;
.....
而不是FileInputStream is = new FileInputStream(file_in);
-----------
那说明你是网络的问题,或者换个版本的服务器吧,另外,连接有没有释放,
应该有这么一个方法ftpClient.disconnect();