网络编程—基于FTP服务器的文件上传与下载

FTP协议简介

  • FTP协议是互联网上使用最广泛的文件传输协议

  • 采用客户端/服务器模式,基于TCP协议

  • FTP采用双TCP连接方式

        →控制连接使用TCP端口号21

        →数据连接使用TCP端口21

  • FTP有两种文件传输模式

  • FTP采用两种数据传输方式

        →主动方式

        在建立数据连接过程中,由服务器主动发起连接,因此被称为主动方式

        →被动方式

        由于建立数据通道时,FTP服务器被动等待FTP客户端的连接,因此称为被动模式

  • 控制连接

        →用于FTP客户端和FTP服务器之间传输FTP控制命令及命令执行信息。控制连接在整个会话期间一直保持打开

  • 数据连接

    →用于传输数据,包括数据上传、下载、文件等。数据传输结束后数据连接将终止

  • ASCII模式是默认的文件传输模式,主要特点是:

        →本地文件转换成标准的ASCII码再传输

        →适用于传输本地文件

  • 二进制流模式,主要特点是:

        →文件按照比特流的方式进行传输

        →适用于传送图片、mp3、mp4等格式的文件

Java语言实现基于FTP服务器的文件传输

    首先,需要下载好第三方的FTP服务器,我们只需要简单的设置用户名,登录密码,上传的目录及一些权限即可,大大方便了我们的操作。假设我的服务器地址是(192.168.254.12),账号:admin,密码:admin

    为了简单起见,我们假设FTP服务器和FTP客户端处于同一局域网中。

文件的上传

public class Upload{
    public static void main(String[] args){
        FTPClient ftpClient = new FTPClient();
        //创建文件输入流,用于读取本地的文件
        try(FileInputStream localIn = new FileInputStream("c:\\test\\jay.jpg")){
            //连接FTP服务器
            FTPClient.connect("192.168.254.12");
            //登录
            FTPClient.login("admin","admin");
            //存储文件(将本地文件上传至FTP服务器)
            //参数1:FTP服务器的存储位置(目录+文件名)
            //参数2:本地的文件输入流
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//存储前设置文件类型
            ftpClient.storeFile("dir/jay.jpg",localIn);//存储
        }catch(SocketException e){
            e.printStackTrace();
        }catch(FileNotFoundException e){
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }finally{
            try{
                //关闭服务器连接
                ftpClient.disconnect();
            }catch (IOexception e)
                e.printStackTrace();
        }
    }
}

文件的下载

public class download{
    public static void main(String[] args){
        FTPClient ftpClitent = new FTPClient();
        //选择需要下载的目录
		File uploadDir = new File("D:\\JavaTest\\download");
        //判断当前目录是否存在
		if (!uploadDir.exists()) {
            //如果不存在,创建这个目录
			uploadDir.mkdir();
		}
        //创建文件输出流,用于下载文件时往磁盘里写入
		try (FileOutputStream out = new FileOutputStream("D:\\JavaTest\\download\\" +                 
            excelFileName)) {
            //连接FTP服务器
			ftpClitent.connect("192.168.254.12", 21);
            //登录
			boolean isLogin = ftpClitent.login("admin", "admin");
            //查看是否登录成功
			System.out.println("登录成功?" + isLogin);
            //下载文件
			ftpClitent.setFileType(FTPClient.BINARY_FILE_TYPE);
            //判断是否下载成功
			boolean isretrieve = ftpClitent.retrieveFile(excelFileName, out);
			System.out.println("下载成功?" + isRetrieve);
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		} finally {
			try {
                //关闭连接
				ftpClitent.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
				return false;
			}
		}

    }
}

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux网络编程下实现的FTP服务器项目是一个包含客户端和服务端的项目,主要用于实现客户端对服务器上的文件进行展示、显示路径、删除、上传下载等功能,同时也可以对客户端本身文件进行展示、显示路径、删除文件等功能。通过该项目,用户可以利用FTP协议在Linux环境下进行文件传输操作。 为了实现FTP服务器的文件传输功能,可以参考以下步骤: 1. 首先,需要编写FTP服务器的代码。可以使用C语言编写,基于Linux网络编程相关的API和库函数,如socket、bind、listen、accept等。编写的服务器代码可以实现文件的上传下载功能。 2. 在服务器代码中,需要处理客户端的连接请求,并建立与客户端之间的数据通信。可以使用socket函数创建服务器套接字,并使用bind函数将服务器套接字绑定到指定的IP地址和端口号。使用listen函数监听客户端连接请求,并使用accept函数接受客户端的连接请求,建立与客户端之间的通信。 3. 一旦与客户端建立连接,服务器可以接收客户端发送的命令,并根据命令执行相应的操作。例如,当客户端发送上传文件的命令时,服务器可以接收客户端发送的文件数据,并保存到服务器的指定目录下。类似地,当客户端发送下载文件的命令时,服务器可以读取服务器上的指定文件,并将文件数据发送给客户端。 4. 在客户端代码中,用户可以通过命令行或者图形界面与服务器进行交互。用户可以输入相应的命令来上传文件到服务器,或者从服务器下载文件到本地。客户端可以使用Linux系统提供的FTP客户端工具,或者自己编写FTP客户端代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值