增加截屏回传
This commit is contained in:
parent
3dcde0ed48
commit
03e78fb975
|
@ -1,13 +1,14 @@
|
|||
# File Trans
|
||||
基于 Qt Socket 的文件传输和消息发送软件。
|
||||
基于 Qt Socket 的文件传输和消息发送软件,支持远程播放、截屏回传。
|
||||
FileTrans 程序在 64 位 Linux 系统 Qt5.15.2 编译。
|
||||
|
||||
## 界面
|
||||

|
||||
|
||||
## Android版
|
||||
https://gitlink.org.cn/sonichy/FileTrans_Android
|
||||
[https://gitlink.org.cn/sonichy/FileTrans_Android](https://gitlink.org.cn/sonichy/FileTrans_Android)
|
||||
|
||||
## 参考
|
||||
[Qt文件服务器](https://github.com/sonichy/HTYServer)
|
||||
[Android手机间使用socket进行文件互传实例](https://www.cnblogs.com/zhujiabin/p/7139644.html)
|
||||
[Android手机间使用socket进行文件互传实例](https://www.cnblogs.com/zhujiabin/p/7139644.html)
|
||||
[QPixmap编码成jpg的内存操作](https://blog.csdn.net/jklinux/article/details/71699182)
|
|
@ -104,7 +104,7 @@ void MainWindow::newConnect()
|
|||
qDebug() << socketError;
|
||||
QMetaEnum metaEnum = QMetaEnum::fromType<QAbstractSocket::SocketError>();
|
||||
QString errorString = metaEnum.valueToKey(socketError);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] " + errorString);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] newConnect: " + errorString);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -129,10 +129,7 @@ void MainWindow::readyRead()
|
|||
if (command == "capture") {
|
||||
QScreen *screen = QApplication::primaryScreen();
|
||||
QPixmap pixmap = screen->grabWindow(QApplication::desktop()->winId());
|
||||
QDateTime time = QDateTime::currentDateTime();
|
||||
QString filename = time.toString("yyyyMMddhhmmss") + ".jpg";
|
||||
QString path = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation) + "/" + filename;
|
||||
pixmap.save(path, nullptr, 100);
|
||||
upload(pixmap, tcpSocket->peerAddress(), tcpSocket->localPort());
|
||||
}
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] [" + IP_remote + "] " + command);
|
||||
} else if (type == "open") {
|
||||
|
@ -186,7 +183,7 @@ void MainWindow::on_pushButton_send_pressed()
|
|||
qDebug() << socketError;
|
||||
QMetaEnum metaEnum = QMetaEnum::fromType<QAbstractSocket::SocketError>();
|
||||
QString errorString = metaEnum.valueToKey(socketError);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] " + errorString);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] Text: " + errorString);
|
||||
});
|
||||
tcpSocket1->connectToHost(QHostAddress(ui->lineEdit_ip->text()), port);
|
||||
connect(tcpSocket1, &QTcpSocket::connected, [=](){
|
||||
|
@ -211,7 +208,7 @@ void MainWindow::on_pushButton_open_pressed()
|
|||
qDebug() << socketError;
|
||||
QMetaEnum metaEnum = QMetaEnum::fromType<QAbstractSocket::SocketError>();
|
||||
QString errorString = metaEnum.valueToKey(socketError);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] " + errorString);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] Play: " + errorString);
|
||||
});
|
||||
tcpSocket1->connectToHost(QHostAddress(ui->lineEdit_ip->text()), port);
|
||||
connect(tcpSocket1, &QTcpSocket::connected, [=](){
|
||||
|
@ -233,7 +230,7 @@ void MainWindow::on_pushButton_capture_pressed()
|
|||
qDebug() << socketError;
|
||||
QMetaEnum metaEnum = QMetaEnum::fromType<QAbstractSocket::SocketError>();
|
||||
QString errorString = metaEnum.valueToKey(socketError);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] " + errorString);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] Capture: " + errorString);
|
||||
});
|
||||
tcpSocket1->connectToHost(QHostAddress(ui->lineEdit_ip->text()), port);
|
||||
connect(tcpSocket1, &QTcpSocket::connected, [=](){
|
||||
|
@ -259,7 +256,7 @@ void MainWindow::upload(QString filepath)
|
|||
qDebug() << socketError;
|
||||
QMetaEnum metaEnum = QMetaEnum::fromType<QAbstractSocket::SocketError>();
|
||||
QString errorString = metaEnum.valueToKey(socketError);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] " + errorString);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] File: " + errorString);
|
||||
});
|
||||
|
||||
tcpSocket1->connectToHost(QHostAddress(ui->lineEdit_ip->text()), port);
|
||||
|
@ -300,6 +297,51 @@ void MainWindow::upload(QString filepath)
|
|||
});
|
||||
}
|
||||
|
||||
void MainWindow::upload(QPixmap pixmap, QHostAddress hostAddress, quint64 port)
|
||||
{
|
||||
QTcpSocket *tcpSocket1 = new QTcpSocket(this);
|
||||
connect(tcpSocket1, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), [=](QAbstractSocket::SocketError socketError){
|
||||
qDebug() << socketError;
|
||||
QMetaEnum metaEnum = QMetaEnum::fromType<QAbstractSocket::SocketError>();
|
||||
QString errorString = metaEnum.valueToKey(socketError);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] Pixmap info: " + errorString);
|
||||
});
|
||||
|
||||
tcpSocket1->connectToHost(hostAddress, port);
|
||||
connect(tcpSocket1, &QTcpSocket::connected, [=](){
|
||||
QString fileName = QDateTime::currentDateTime().toString("yyyyMMddHHmmss") + ".jpg";
|
||||
QJsonObject JO;
|
||||
JO.insert("type", "file");
|
||||
JO.insert("fileName", fileName);
|
||||
JO.insert("lastModified", 0);
|
||||
QString s = QJsonDocument(JO).toJson(QJsonDocument::Compact);
|
||||
tcpSocket1->write(s.toUtf8());
|
||||
tcpSocket1->close();
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] 上传:" + s);
|
||||
});
|
||||
|
||||
QTcpSocket *tcpSocket2 = new QTcpSocket(this);
|
||||
connect(tcpSocket2, QOverload<QAbstractSocket::SocketError>::of(&QAbstractSocket::error), [=](QAbstractSocket::SocketError socketError){
|
||||
qDebug() << socketError;
|
||||
QMetaEnum metaEnum = QMetaEnum::fromType<QAbstractSocket::SocketError>();
|
||||
QString errorString = metaEnum.valueToKey(socketError);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] Pixmap upload: " + errorString);
|
||||
});
|
||||
tcpSocket2->connectToHost(hostAddress, port);
|
||||
connect(tcpSocket2, &QTcpSocket::connected, [=](){
|
||||
//QPixmap编码成jpg的内存操作:https://blog.csdn.net/jklinux/article/details/71699182
|
||||
QByteArray BA;
|
||||
QBuffer buffer(&BA);
|
||||
if (!pixmap.save(&buffer, "jpg")) {
|
||||
QMessageBox::critical(this, "Error", "QPixmap.save(QBuffer,\"jpg\") failed");
|
||||
return;
|
||||
}
|
||||
tcpSocket2->write(BA);
|
||||
ui->textBrowser->append("[" + QDateTime::currentDateTime().toString("HH:mm:ss") + "] Pixmap上传完成");
|
||||
tcpSocket2->close();
|
||||
});
|
||||
}
|
||||
|
||||
void MainWindow::dragEnterEvent(QDragEnterEvent *e)
|
||||
{
|
||||
//if(e->mimeData()->hasFormat("text/uri-list")) //只接收文件列表
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <QDesktopWidget>
|
||||
#include <QStandardPaths>
|
||||
#include <QDesktopServices>
|
||||
#include <QBuffer>
|
||||
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
|
@ -47,6 +48,7 @@ private:
|
|||
qint64 length=0, port_local;
|
||||
QString BS(long b);
|
||||
void upload(QString filepath);
|
||||
void upload(QPixmap pixmap, QHostAddress hostAddress, quint64 port);
|
||||
double lastModified = 0;
|
||||
void dragEnterEvent(QDragEnterEvent*);
|
||||
void dropEvent(QDropEvent*);
|
||||
|
|
Loading…
Reference in New Issue