Qt远程传输文件

首先获取sudo无密码登陆

无密码sudo-CSDN博客

安装sshpass:sudo apt-get install sshpass

QProcess上传:

QStringList cmd;

QString str ="sudo sshpass -p '123456' scp tmp.txt hostname@192.168.1.111:/home/hostname"

cmd<<"-c"<<str

QProcess process;

process.start("/bin/bash",cmd);

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Qt 中实现 TCP 传输文件的步骤大致如下: 1. 建立 TCP 连接:使用 QTcpSocket 建立与远程主机的 TCP 连接。 2. 发送文件信息:发送文件名、文件大小等信息给接收方。 3. 发送文件内容:分块读取文件内容,通过 QTcpSocket 发送给接收方。 4. 接收文件内容:接收方通过 QTcpSocket 接收数据并将其写入文件中。 以下是一个简单的实现示例: 发送方: ``` QTcpSocket tcpSocket; tcpSocket.connectToHost(hostAddress, port); QFile file(fileName); if (!file.open(QIODevice::ReadOnly)) { qDebug() << "Open file error!"; return; } QDataStream out(&tcpSocket); out.setVersion(QDataStream::Qt_5_15); // 发送文件信息 out << qint64(0) << file.fileName() << qint64(file.size()); out.device()->seek(0); out << qint64(block.size() - sizeof(qint64) * 2); // 发送文件内容 const int blockSize = 64 * 1024; while (!file.atEnd()) { QByteArray block = file.read(blockSize); tcpSocket.write(block); } tcpSocket.disconnectFromHost(); ``` 接收方: ``` QTcpSocket tcpSocket; tcpSocket.connectToHost(hostAddress, port); QDataStream in(&tcpSocket); in.setVersion(QDataStream::Qt_5_15); // 接收文件信息 qint64 fileSize = 0; QString fileName; in >> fileSize >> fileName; QFile file(fileName); if (!file.open(QIODevice::WriteOnly)) { qDebug() << "Open file error!"; return; } // 接收文件内容 const int blockSize = 64 * 1024; qint64 receivedSize = 0; while (receivedSize < fileSize) { QByteArray block = tcpSocket.read(qMin(fileSize - receivedSize, blockSize)); receivedSize += block.size(); file.write(block); } tcpSocket.disconnectFromHost(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jena_wy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值