fix: 1.console client not register own data type. 2.start by current screen heigh width. 3.set heartbeat to server.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(frelay VERSION 0.1 LANGUAGES CXX)
|
||||
project(frelay VERSION 0.2 LANGUAGES CXX)
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
@@ -20,7 +20,7 @@ endif()
|
||||
|
||||
if(WIN32)
|
||||
if(DEFINED XP_PLATFORM_SUPPORT)
|
||||
message(STATUS "For Windows XP platform.")
|
||||
message(STATUS "Support Windows XP platform.")
|
||||
add_definitions(-D_WIN32_WINNT=0x0501)
|
||||
else()
|
||||
add_definitions(-D_WIN32_WINNT=0x0601)
|
||||
|
||||
@@ -74,7 +74,7 @@ void ClientCore::onReadyRead()
|
||||
void ClientCore::onDisconnected()
|
||||
{
|
||||
connected_ = false;
|
||||
qCritical() << QString("client %1 disconnected...").arg(remoteID_);
|
||||
qCritical() << QString("You [%1] disconnected...").arg(ownID_);
|
||||
emit sigDisconnect();
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ void ConsoleHelper::RunWorker(ClientCore* clientCore)
|
||||
clientCore_ = clientCore;
|
||||
|
||||
sockWorker_ = new SocketWorker(clientCore_, nullptr);
|
||||
heatBeat_ = new HeatBeat(clientCore_);
|
||||
|
||||
clientCore_->moveToThread(sockWorker_);
|
||||
fileTrans_ = new FileTrans(clientCore_);
|
||||
|
||||
@@ -24,6 +26,7 @@ void ConsoleHelper::RunWorker(ClientCore* clientCore)
|
||||
connect(sockWorker_, &QThread::finished, sockWorker_, &QObject::deleteLater);
|
||||
|
||||
sockWorker_->start();
|
||||
heatBeat_->start();
|
||||
}
|
||||
|
||||
void ConsoleHelper::SetIpPort(const QString& ip, quint16 port)
|
||||
|
||||
@@ -25,6 +25,7 @@ private:
|
||||
quint16 port_{};
|
||||
FileTrans* fileTrans_{};
|
||||
SocketWorker* sockWorker_{};
|
||||
HeatBeat* heatBeat_{};
|
||||
ClientCore* clientCore_;
|
||||
};
|
||||
|
||||
|
||||
@@ -25,6 +25,11 @@ int main(int argc, char* argv[])
|
||||
#endif
|
||||
#endif
|
||||
|
||||
qRegisterMetaType<QSharedPointer<FrameBuffer>>("QSharedPointer<FrameBuffer>");
|
||||
qRegisterMetaType<InfoClientVec>("InfoClientVec");
|
||||
qRegisterMetaType<DirFileInfoVec>("DirFileInfoVec");
|
||||
qRegisterMetaType<TransTask>("TransTask");
|
||||
|
||||
QCoreApplication app(argc, argv);
|
||||
|
||||
Util::InitLogger("frelayConsole.log", "frelayConsole");
|
||||
|
||||
@@ -24,6 +24,7 @@ void Connecter::RunWorker(ClientCore* clientCore)
|
||||
connect(clientCore_, &ClientCore::sigClients, this, &Connecter::HandleClients);
|
||||
|
||||
sockWorker_ = new SocketWorker(clientCore_, nullptr);
|
||||
heatBeat_ = new HeatBeat(clientCore_);
|
||||
clientCore_->moveToThread(sockWorker_);
|
||||
|
||||
connect(clientCore_, &ClientCore::conSuccess, this, [this]() {
|
||||
@@ -50,6 +51,7 @@ void Connecter::RunWorker(ClientCore* clientCore)
|
||||
connect(this, &Connecter::sigDisConnect, clientCore_, &ClientCore::Disconnect);
|
||||
connect(sockWorker_, &QThread::finished, sockWorker_, &QObject::deleteLater);
|
||||
|
||||
heatBeat_->start();
|
||||
sockWorker_->start();
|
||||
}
|
||||
|
||||
@@ -89,6 +91,7 @@ void Connecter::setState(ConnectState cs)
|
||||
ui->btnConnect->setEnabled(false);
|
||||
ui->btnDisconnect->setEnabled(true);
|
||||
RefreshClient();
|
||||
connect(heatBeat_, &HeatBeat::finished, heatBeat_, &QObject::deleteLater);
|
||||
break;
|
||||
case CS_DISCONNECT:
|
||||
ui->btnConnect->setEnabled(true);
|
||||
@@ -139,7 +142,8 @@ void Connecter::InitControl()
|
||||
ui->btnDisconnect->setEnabled(false);
|
||||
ui->edIP->setText("127.0.0.1");
|
||||
ui->edPort->setText("9009");
|
||||
ui->edPort->setFixedWidth(70);
|
||||
// ui->edIP->setMinimumWidth(120);
|
||||
// ui->edPort->setFixedWidth(60);
|
||||
|
||||
connect(ui->btnConnect, &QPushButton::clicked, this, &Connecter::Connect);
|
||||
connect(ui->btnRefresh, &QPushButton::clicked, this, &Connecter::RefreshClient);
|
||||
|
||||
@@ -54,6 +54,7 @@ private:
|
||||
private:
|
||||
QMenu* menu_;
|
||||
SocketWorker* sockWorker_{};
|
||||
HeatBeat* heatBeat_{};
|
||||
QStandardItemModel* model_;
|
||||
};
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>350</width>
|
||||
<height>276</height>
|
||||
<width>331</width>
|
||||
<height>289</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@@ -26,6 +26,30 @@
|
||||
<item>
|
||||
<widget class="QLineEdit" name="edIP"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="elbClient">
|
||||
<property name="text">
|
||||
<string>None</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
@@ -46,35 +70,7 @@
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||
<item>
|
||||
<widget class="QLabel" name="lbClient">
|
||||
<property name="text">
|
||||
<string>Client:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="elbClient">
|
||||
<property name="text">
|
||||
<string>None</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Orientation::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_3"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListView" name="listView"/>
|
||||
|
||||
@@ -28,7 +28,7 @@ public:
|
||||
explicit LogPrint(QWidget* parent = nullptr);
|
||||
~LogPrint();
|
||||
|
||||
public:
|
||||
public slots:
|
||||
void Info(const QString& message);
|
||||
void Warn(const QString& message);
|
||||
void Error(const QString& message);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "frelayGUI.h"
|
||||
|
||||
#include <QLabel>
|
||||
#include <QScreen>
|
||||
#include <QSplitter>
|
||||
#include <fversion.h>
|
||||
|
||||
@@ -15,7 +16,11 @@ frelayGUI::frelayGUI(QWidget* parent) : QMainWindow(parent), ui(new Ui::frelayGU
|
||||
InitControl();
|
||||
ControlSignal();
|
||||
ControlLayout();
|
||||
resize(1500, 800);
|
||||
|
||||
QRect availableGeometry = QGuiApplication::primaryScreen()->availableGeometry();
|
||||
int width = static_cast<int>(availableGeometry.width() * 0.8);
|
||||
int height = static_cast<int>(availableGeometry.height() * 0.6);
|
||||
resize(width, height);
|
||||
|
||||
setWindowTitle(QString(tr("frelay %1")).arg(VERSION_NUM));
|
||||
|
||||
@@ -95,15 +100,16 @@ void frelayGUI::ControlMsgHander(QtMsgType type, const QMessageLogContext& conte
|
||||
{
|
||||
switch (type) {
|
||||
case QtDebugMsg:
|
||||
logPrint->Debug(msg);
|
||||
QMetaObject::invokeMethod(logPrint, "Debug", Qt::QueuedConnection, Q_ARG(QString, msg));
|
||||
break;
|
||||
case QtInfoMsg:
|
||||
logPrint->Info(msg);
|
||||
QMetaObject::invokeMethod(logPrint, "Info", Qt::QueuedConnection, Q_ARG(QString, msg));
|
||||
break;
|
||||
case QtWarningMsg:
|
||||
logPrint->Warn(msg);
|
||||
QMetaObject::invokeMethod(logPrint, "Warn", Qt::QueuedConnection, Q_ARG(QString, msg));
|
||||
break;
|
||||
default:
|
||||
QMetaObject::invokeMethod(logPrint, "Error", Qt::QueuedConnection, Q_ARG(QString, msg));
|
||||
logPrint->Error(msg);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -12,10 +12,10 @@
|
||||
| 序号 | 类型 | 内容 | 说明 | 基于版本 | 完成版本 |
|
||||
| :--: | :--: | ------------------------------------------------------------ | :--: | :------: | :------: |
|
||||
| 8 | 功能 | 文件浏览页面要支持按照类型排序,时间排序,和文件后缀筛选。 | | 0.1 | |
|
||||
| 7 | 优化 | IP和Port宽度要合理一些,IP过小,Port宽度过大。 | | 0.1 | |
|
||||
| 7 | 优化 | IP和Port宽度要合理一些,IP过小,Port宽度过大。 | | 0.1 | 0.2 |
|
||||
| 6 | 功能 | 比对控件添加可尝试目录浏览控件跳转到指定目录。 | | 0.1 | |
|
||||
| 5 | 问题 | 未设置心跳包,导致超时被Server端踢出。 | 必改 | 0.1 | |
|
||||
| 5 | 问题 | 未设置心跳包,导致超时被Server端踢出。 | 必改 | 0.1 | 0.2 |
|
||||
| 4 | 问题 | 重复链接Server会崩溃。 | | 0.1 | |
|
||||
| 3 | 优化 | 首次启动时应当按照当前分辨率进行初始化大小,而不是指定大小。 | | 0.1 | |
|
||||
| 3 | 优化 | 首次启动时应当按照当前分辨率进行初始化大小,而不是指定大小。 | | 0.1 | 0.2 |
|
||||
| 2 | 问题 | 当某个文件传输失败的时候,关闭传输窗口,再次传输显示已经在传输中。 | | 0.1 | |
|
||||
| 1 | 问题 | Console端显示未注册QSharedPointer\<FrameBuffer\>类型 | | 0.1 | |
|
||||
| 1 | 问题 | Console端显示未注册QSharedPointer\<FrameBuffer\>类型 | | 0.1 | 0.2 |
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
#include "InfoMsg.h"
|
||||
#include "InfoPack.hpp"
|
||||
|
||||
#define NO_HEATBEAT_TIMEOUT (10)
|
||||
#define MONITOR_HEART_SPED (10 * 1000)
|
||||
|
||||
Server::Server(QObject* parent) : QTcpServer(parent)
|
||||
{
|
||||
monitorTimer_ = new QTimer(this);
|
||||
@@ -27,7 +30,7 @@ bool Server::startServer(quint16 port)
|
||||
}
|
||||
|
||||
qDebug() << "Server started on port" << serverPort();
|
||||
monitorTimer_->start(300000);
|
||||
monitorTimer_->start(MONITOR_HEART_SPED);
|
||||
id_ = QString("0.0.0.0:%1").arg(serverPort());
|
||||
return true;
|
||||
}
|
||||
@@ -101,7 +104,7 @@ void Server::onClientDisconnected()
|
||||
clients_.remove(clientId);
|
||||
}
|
||||
|
||||
qDebug() << "Client disconnected:" << clientId;
|
||||
qDebug() << "Client disconnected:" << __LINE__ << clientId;
|
||||
socket->deleteLater();
|
||||
}
|
||||
|
||||
@@ -233,7 +236,8 @@ void Server::monitorClients()
|
||||
QWriteLocker locker(&rwLock_);
|
||||
|
||||
for (auto it = clients_.begin(); it != clients_.end();) {
|
||||
if (now - it.value()->connectTime > 300) {
|
||||
auto t = now - it.value()->connectTime;
|
||||
if (t > NO_HEATBEAT_TIMEOUT) {
|
||||
qDebug() << "Disconnecting inactive client:" << it.value()->id;
|
||||
it.value()->socket->disconnectFromHost();
|
||||
it = clients_.erase(it);
|
||||
|
||||
Reference in New Issue
Block a user