计网课程设计的要求是:
1) 该FTP客户端程序具有以下基本功能:
能完成FTP链接的打开和关闭操作; 能执行文件的上传和下载; 能完成目录的创建、删除等有关操作。 要求可以传输简单的文本文件。
2) 开发美观易用的图形界面
FTP使用客户服务器方式,因为开发的是客户端,所以需要一个FTP服务器,客户端进行连接访问,进行文件操作。
前面我们已经安装好了Linux虚拟机,在Linux搭建FTP服务器原参考博客:
【Linux - 搭建ftp服务器】http://t.csdnimg.cn/zDGCa
但是!!!按照原博客搭建的FTP服务器会有很多访问权限问题,导致无法正常连接FTP服务器进行文件操作。
经过很多很多次尝试,我省略了原博客中很多设置,搭建了一个可以正常连接和进行文件操作的FTP服务器。
yum install vsftpd -y
service vsftpd start
yum install ftp lftp -y
useradd sc
echo 123|passwd sc --stdin
查看FTP服务器的ip地址:
ip addr
登录FTP服务器:
lftp -u sc,123 192.168.206.131
登录成功!
此时外部还是无法连接FTP服务器:
Windows:WIN+R打开命令行窗口,输入ftp,再输入open+FTP服务器地址
service firewalld stop
selinux是linux的一个内核模块,是linux的安全子系统。
[root@localhost vsftpd]# getenforce
Enforcing
[root@localhost vsftpd]# setenforce 0
[root@localhost vsftpd]# getenforce
Permissive
package ftp;
import org.apache.commons.net.ftp.FTPClient;
public class ftpConnect {
private static final String ftp_server="192.168.206.131"; //FTP服务器地址
private static final int ftp_port=21; //FTP服务器端口号
private static final String ftp_user="sc"; //用户
private static final String ftp_passwd="123"; //密码
private static final int timeout=5000; //超时时间
private static final String enconding="utf-8"; //编码配置
public static FTPClient getFTPClient() throws Exception{
FTPClient client=new FTPClient(); //实例化FTPClient类
client.connect(ftp_server,ftp_port); //连接FTP服务器
client.login(ftp_user,ftp_passwd); //用户登录
client.setConnectTimeout(timeout); //设置超时时间
client.setControlEncoding(enconding); //设置编码
System.out.println("【FTP连接】状态码"+client.getReplyCode()); //如果可以连接返回230
return client;
}
}
package ftp;
import org.apache.commons.net.ftp.FTPClient;
public class ftpTest {
public static void main(String[] args) throws Exception{
FTPClient client=ftpConnect.getFTPClient(); // 获取FTP连接
System.out.println(client.abort()); //中断当前的FTP传输,如果成功返回true,否则返回false
client.logout(); //注销
}
}
FTP服务器的文件操作目录为/var/ftp/,此时无法对该目录进行文件操作,开放该文件夹下所有文件的权限:
chmod -R 777 /var/ftp/*
重启FTP服务器:
service vsftpd restart
外部就可以对/var/ftp/进行文件操作了。
至此!!!就可以进行FTP客户端的开发了!!!
注意:每次关闭Linux虚拟机后,再次启动FTP服务器前都需要关闭防火墙和selinux。