如何实现Linux系统和Windows系统之间的文件传输

FTP
一、FTP的概念
二、操作过程
2.1 安装软件包,备份文件
2.2 修改配置文件
2.3 赋权
2.4 开启FTP服务,关闭防火墙和安全机制
2.5 匿名访问测试

一、FTP的概念
FTP服务——用来传输文件的协议
FTP是一种上传和下载用的软件。用户可以通过它把自己的PC机与运行FTP协议的服务器相连,访问服务器上的程序和信息
与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。
FTP服务器默认使用TCP协议的20、21端口进行通信
(20端口用于建立数据连接并传输文件数据,21端口用于建立控制连接并传输FTP控制命令)
FTP数据连接可以分为主动模式(服务器主动发起数据连接)和被动模式(服务器被动等待数据连接)
二、操作过程
开始之前先挂载镜像在这里插入图片描述

2.1 安装软件包,备份文件
yum install -y vsftpd #安装软件vsftpd
cd /etc/vsftpd/ #切换到/etc/vsftpd目录下,配置文件为/etc/vsftpd/vsftpd.conf
cp vsftpd.conf vsftpd.conf.bak #修改配置文件之前先备份,它没有模板
1
2
3
在这里插入图片描述
在这里插入图片描述

2.2 修改配置文件
vim /etc/vsftpd/vsftpd.conf #修改配置文件
anonymous_enable=YES #开启匿名用户访问,默认已开启
write_enable=YES #开放服务器的写权限(若要上传,必须开启),默认已开启
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码),默认已开启
anon_upload_enable=YES #允许匿名用户上传文件,默认已注释,需取消注释
anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录。默认已注释,需取消注释
anon_other_write_enable =YES #允许删除、重命名、覆盖等操作,需添加
1
2
3
4
5
6
7
在这里插入图片描述
在这里插入图片描述

2.3 赋权
chmod 777 /var/ftp/pub #为匿名访问ftp的根目录下的 pub子目录设置最大权限,以便匿名用户上传数据
1
在这里插入图片描述

2.4 开启FTP服务,关闭防火墙和安全机制
systemctl start vsftpd #开启服务
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭系统安全机
1
2
3
在这里插入图片描述

2.5 匿名访问测试
在这里插入图片描述
windows 10:

ftp 192.168.184.10 #建立ftp连接
ftp> pwd #匿名访问ftp的根目录为Linux系统的/var/ftp/目录
ftp> ls #查看当前目录
ftp> cd pub #切换到pub 目录
ftp> get 文件名 #下载文件到当前Windows本地目录
ftp> put 文件名 #上传文件到ftp目录
ftp> quit #退出
1
2
3
4
5
6
7
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
45
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现LinuxWindows之间文件传输,可以使用Qt的网络模块。具体步骤如下: 1.创建客户端和服务器端应用程序,并在它们之间建立网络连接。 2.在客户端中选择要传输的文件,并将其读入内存中。 3.将文件数据通过网络发送到服务器端。 4.在服务器端接收文件数据并将其写入磁盘。 5.在客户端和服务器端之间协商文件传输协议和编码方式。 以下是一个简单的示例代码,用于在LinuxWindows之间传输文件: 客户端: ``` QFile file("/path/to/file"); if(!file.open(QIODevice::ReadOnly)) { qDebug() << "Unable to open file for reading"; return; } QTcpSocket socket; socket.connectToHost("server.ip.address", 12345); if(!socket.waitForConnected()) { qDebug() << "Unable to connect to server"; return; } QByteArray block; QDataStream out(&block, QIODevice::WriteOnly); out.setVersion(QDataStream::Qt_5_15); out << (quint64)0; // Placeholder for total message size out << file.fileName(); out << file.readAll(); out.device()->seek(0); out << (quint64)(block.size() - sizeof(quint64)); // Fill in total message size socket.write(block); socket.waitForBytesWritten(); socket.disconnectFromHost(); ``` 服务器端: ``` QTcpServer server; server.listen(QHostAddress::Any, 12345); connect(&server, SIGNAL(newConnection()), this, SLOT(onNewConnection())); void MyServer::onNewConnection() { QTcpSocket *socket = server.nextPendingConnection(); connect(socket, SIGNAL(readyRead()), this, SLOT(onReadyRead())); } void MyServer::onReadyRead() { QTcpSocket *socket = qobject_cast<QTcpSocket*>(sender()); QDataStream in(socket); in.setVersion(QDataStream::Qt_5_15); static quint64 totalBytes = 0; static quint64 fileNameSize = 0; static QString fileName; if(totalBytes == 0) { if(socket->bytesAvailable() < (int)sizeof(quint64)) { return; } in >> totalBytes; } if(fileNameSize == 0) { if(socket->bytesAvailable() < (int)sizeof(quint64)) { return; } in >> fileNameSize; } if(fileName.isEmpty()) { if(socket->bytesAvailable() < fileNameSize) { return; } in >> fileName; } QFile file("/path/to/save/file" + fileName); if(!file.open(QIODevice::WriteOnly)) { qDebug() << "Unable to open file for writing"; return; } QByteArray data = socket->readAll(); file.write(data); totalBytes -= data.size(); if(totalBytes == 0) { file.close(); socket->disconnectFromHost(); } } ``` 注意,此示例代码仅用于演示目的,您需要根据实际情况进行修改和调整。例如,您可能需要添加错误处理和协议协商等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值