http://zhidao.baidu.com/question/245219177.html

JAVA编写FTP连接报错java.net.ConnectException: Connection refused: connect FTP


2011-3-29 16:43

| 浏览次数:512次

代码如下:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

import sun.net.TelnetOutputStream;
import sun.net.TelnetInputStream;
import sun.net.ftp.FtpClient;

public class FtpTest {
String localfilename;

String remotefilename;

FtpClient ftpClient;

// server:服务器名字
// user:用户名
// password:密码
// path:服务器上的路径
public void connectServer(String ip, int port,String user
                , String password,String path) {

try {
ftpClient = new FtpClient();
ftpClient.openServer(ip,port);
ftpClient.login(user, password);
System.out.println("login success!");
if (path.length() != 0) ftpClient.cd(path);
ftpClient.binary();
} catch (IOException ex) {
System.out.println("not login");
System.out.println(ex);
}
}

public void closeConnect() {
try {
ftpClient.closeServer();
System.out.println("disconnect success");
} catch (IOException ex) {
System.out.println("not disconnect");
System.out.println(ex);
}
}



public static void main(String agrs[]) {

FtpTest ft = new FtpTest();
//以连接本机做测试
ft.connectServer("127.0.0.1",21, "实际的账号", "实际密码","/");
}
}


问题补充:



错误提示: not login java.net.ConnectException: Connection refused: connect




2011-3-29 16:51


满意回答


你本地有没有FTP服务器在运行?



追问



你的意思是?



回答



你本地有没有FTP的 server端? 在cmd窗口里用下面命令看有没有端口为21的程序。 C:\Users\Administrator>netstat -a



追问



我本机没有server端,你所说的FTP server不一定是JAVA写的吧?以前我都是用FileZilla远程连接到那台机器。把文件放上去。现在我是想写代码让程序自己上传到这台机器上。可以一直就连接不上。21端口没有用,PING远程机器也可以PING通



 



回答



那你127.0.0.1应该改成远程机器的IP。



追问



我改过了,也试过了,还是报这个错误。



回答



端口是21吗,还有用户名密码注意大小写等



追问



端口是21,自己的机器账号密码肯定没错,连远程的机器用FileZilla测试过是可以连接的。所以账号密码肯定没问题。问题到底出在哪啊?困扰两天了



回答



这个应该没问题。 如果端口、用户名、密码和你在FileZilla里设置的一模一样,那可能是你远程服务器上的ftp需要加密传输等等其它设置。你可以仔细比较FileZilla上有什么不同