diff --git a/comtool/api/api.pri b/comtool/api/api.pri
index 4e34769..ede42b8 100644
--- a/comtool/api/api.pri
+++ b/comtool/api/api.pri
@@ -1,5 +1,7 @@
HEADERS += \
- $$PWD/appconfig.h
+ $$PWD/appconfig.h \
+ $$PWD/appdata.h
SOURCES += \
- $$PWD/appconfig.cpp
+ $$PWD/appconfig.cpp \
+ $$PWD/appdata.cpp
diff --git a/comtool/api/appconfig.cpp b/comtool/api/appconfig.cpp
index faef55c..fe488e2 100644
--- a/comtool/api/appconfig.cpp
+++ b/comtool/api/appconfig.cpp
@@ -96,65 +96,3 @@ void AppConfig::writeConfig()
set.setValue("AutoConnect", AppConfig::AutoConnect);
set.endGroup();
}
-
-QStringList AppConfig::Intervals = QStringList();
-QStringList AppConfig::Datas = QStringList();
-QStringList AppConfig::Keys = QStringList();
-QStringList AppConfig::Values = QStringList();
-
-void AppConfig::readSendData()
-{
- //读取发送数据列表
- AppConfig::Datas.clear();
- QString fileName = QString("%1/%2").arg(QUIHelper::appPath()).arg(AppConfig::SendFileName);
- QFile file(fileName);
- if (file.size() > 0 && file.open(QFile::ReadOnly | QIODevice::Text)) {
- while (!file.atEnd()) {
- QString line = file.readLine();
- line = line.trimmed();
- line = line.replace("\r", "");
- line = line.replace("\n", "");
- if (!line.isEmpty()) {
- AppConfig::Datas.append(line);
- }
- }
-
- file.close();
- }
-
- if (AppConfig::Datas.count() == 0) {
- AppConfig::Datas << "16 FF 01 01 E0 E1" << "16 FF 01 01 E1 E2";
- }
-}
-
-void AppConfig::readDeviceData()
-{
- //读取转发数据列表
- AppConfig::Keys.clear();
- AppConfig::Values.clear();
- QString fileName = QString("%1/%2").arg(QUIHelper::appPath()).arg(AppConfig::DeviceFileName);
- QFile file(fileName);
- if (file.size() > 0 && file.open(QFile::ReadOnly | QIODevice::Text)) {
- while (!file.atEnd()) {
- QString line = file.readLine();
- line = line.trimmed();
- line = line.replace("\r", "");
- line = line.replace("\n", "");
- if (!line.isEmpty()) {
- QStringList list = line.split(";");
- QString key = list.at(0);
- QString value;
- for (int i = 1; i < list.count(); i++) {
- value += QString("%1;").arg(list.at(i));
- }
-
- //去掉末尾分号
- value = value.mid(0, value.length() - 1);
- AppConfig::Keys.append(key);
- AppConfig::Values.append(value);
- }
- }
-
- file.close();
- }
-}
diff --git a/comtool/api/appconfig.h b/comtool/api/appconfig.h
index c41a8ad..5603bc1 100644
--- a/comtool/api/appconfig.h
+++ b/comtool/api/appconfig.h
@@ -33,16 +33,9 @@ public:
static int SleepTime; //延时时间
static bool AutoConnect; //自动重连
- //读写配置参数及其他操作
+ //读写配置参数
static void readConfig(); //读取配置参数
static void writeConfig(); //写入配置参数
-
- static QStringList Intervals;
- static QStringList Datas;
- static QStringList Keys;
- static QStringList Values;
- static void readSendData();
- static void readDeviceData();
};
#endif // APPCONFIG_H
diff --git a/comtool/api/appdata.cpp b/comtool/api/appdata.cpp
new file mode 100644
index 0000000..7cbf7fa
--- /dev/null
+++ b/comtool/api/appdata.cpp
@@ -0,0 +1,92 @@
+#include "appdata.h"
+#include "quihelper.h"
+
+QStringList AppData::Intervals = QStringList();
+QStringList AppData::Datas = QStringList();
+QStringList AppData::Keys = QStringList();
+QStringList AppData::Values = QStringList();
+
+QString AppData::SendFileName = "send.txt";
+void AppData::readSendData()
+{
+ //读取发送数据列表
+ AppData::Datas.clear();
+ QString fileName = QString("%1/%2").arg(QUIHelper::appPath()).arg(AppData::SendFileName);
+ QFile file(fileName);
+ if (file.size() > 0 && file.open(QFile::ReadOnly | QIODevice::Text)) {
+ while (!file.atEnd()) {
+ QString line = file.readLine();
+ line = line.trimmed();
+ line = line.replace("\r", "");
+ line = line.replace("\n", "");
+ if (!line.isEmpty()) {
+ AppData::Datas.append(line);
+ }
+ }
+
+ file.close();
+ }
+
+ //没有的时候主动添加点免得太空
+ if (AppData::Datas.count() == 0) {
+ AppData::Datas << "16 FF 01 01 E0 E1" << "16 FF 01 01 E1 E2";
+ }
+}
+
+QString AppData::DeviceFileName = "device.txt";
+void AppData::readDeviceData()
+{
+ //读取转发数据列表
+ AppData::Keys.clear();
+ AppData::Values.clear();
+ QString fileName = QString("%1/%2").arg(QUIHelper::appPath()).arg(AppData::DeviceFileName);
+ QFile file(fileName);
+ if (file.size() > 0 && file.open(QFile::ReadOnly | QIODevice::Text)) {
+ while (!file.atEnd()) {
+ QString line = file.readLine();
+ line = line.trimmed();
+ line = line.replace("\r", "");
+ line = line.replace("\n", "");
+ if (!line.isEmpty()) {
+ QStringList list = line.split(";");
+ QString key = list.at(0);
+ QString value;
+ for (int i = 1; i < list.count(); i++) {
+ value += QString("%1;").arg(list.at(i));
+ }
+
+ //去掉末尾分号
+ value = value.mid(0, value.length() - 1);
+ AppData::Keys.append(key);
+ AppData::Values.append(value);
+ }
+ }
+
+ file.close();
+ }
+}
+
+void AppData::saveData(const QString &data)
+{
+ if (data.length() <= 0) {
+ return;
+ }
+
+ QString fileName = QString("%1/%2.txt").arg(QUIHelper::appPath()).arg(STRDATETIME);
+ QFile file(fileName);
+ if (file.open(QFile::WriteOnly | QFile::Text)) {
+ file.write(data.toUtf8());
+ file.close();
+ }
+}
+
+void AppData::loadIP(QComboBox *cbox)
+{
+ //获取本机所有IP
+ QStringList ips = QUIHelper::getLocalIPs();
+ cbox->clear();
+ cbox->addItems(ips);
+ if (!ips.contains("127.0.0.1")) {
+ cbox->addItem("127.0.0.1");
+ }
+}
diff --git a/comtool/api/appdata.h b/comtool/api/appdata.h
new file mode 100644
index 0000000..13091c7
--- /dev/null
+++ b/comtool/api/appdata.h
@@ -0,0 +1,30 @@
+#ifndef APPDATA_H
+#define APPDATA_H
+
+#include "head.h"
+
+class AppData
+{
+public:
+ //全局变量
+ static QStringList Intervals;
+ static QStringList Datas;
+ static QStringList Keys;
+ static QStringList Values;
+
+ //读取发送数据列表
+ static QString SendFileName;
+ static void readSendData();
+
+ //读取转发数据列表
+ static QString DeviceFileName;
+ static void readDeviceData();
+
+ //保存数据到文件
+ static void saveData(const QString &data);
+
+ //添加网卡IP地址到下拉框
+ static void loadIP(QComboBox *cbox);
+};
+
+#endif // APPDATA_H
diff --git a/comtool/form/frmcomtool.cpp b/comtool/form/frmcomtool.cpp
index d5861b3..d9db3b3 100644
--- a/comtool/form/frmcomtool.cpp
+++ b/comtool/form/frmcomtool.cpp
@@ -24,8 +24,8 @@ void frmComTool::initForm()
sendCount = 0;
isShow = true;
- ui->cboxSendInterval->addItems(AppConfig::Intervals);
- ui->cboxData->addItems(AppConfig::Datas);
+ ui->cboxSendInterval->addItems(AppData::Intervals);
+ ui->cboxData->addItems(AppData::Datas);
//读取数据
timerRead = new QTimer(this);
@@ -49,7 +49,11 @@ void frmComTool::initForm()
socket = new QTcpSocket(this);
socket->abort();
connect(socket, SIGNAL(readyRead()), this, SLOT(readDataNet()));
+#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
+ connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(readErrorNet()));
+#else
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(readErrorNet()));
+#endif
timerConnect = new QTimer(this);
connect(timerConnect, SIGNAL(timeout()), this, SLOT(connectNet()));
@@ -317,10 +321,10 @@ void frmComTool::readData()
//启用调试则模拟调试数据
if (ui->ckDebug->isChecked()) {
- int count = AppConfig::Keys.count();
+ int count = AppData::Keys.count();
for (int i = 0; i < count; i++) {
- if (buffer.startsWith(AppConfig::Keys.at(i))) {
- sendData(AppConfig::Values.at(i));
+ if (buffer.startsWith(AppData::Keys.at(i))) {
+ sendData(AppData::Values.at(i));
break;
}
}
@@ -427,7 +431,7 @@ void frmComTool::on_btnOpen_clicked()
timerRead->stop();
com->close();
com->deleteLater();
-
+
changeEnable(false);
ui->btnOpen->setText("打开串口");
on_btnClear_clicked();
@@ -482,7 +486,7 @@ void frmComTool::on_btnData_clicked()
file.close();
ui->txtMain->clear();
ui->btnData->setText("管理数据");
- AppConfig::readSendData();
+ AppData::readSendData();
}
}
diff --git a/comtool/head.h b/comtool/head.h
index 63c0ee1..8b707e9 100644
--- a/comtool/head.h
+++ b/comtool/head.h
@@ -12,3 +12,4 @@
#pragma execution_character_set("utf-8")
#include "appconfig.h"
+#include "appdata.h"
diff --git a/comtool/main.cpp b/comtool/main.cpp
index 7ba939c..23ec214 100644
--- a/comtool/main.cpp
+++ b/comtool/main.cpp
@@ -17,11 +17,12 @@ int main(int argc, char *argv[])
QUIHelper::setTranslator(":/widgets.qm");
QUIHelper::initRand();
- AppConfig::Intervals << "1" << "10" << "20" << "50" << "100" << "200" << "300" << "500" << "1000" << "1500" << "2000" << "3000" << "5000" << "10000";
AppConfig::ConfigFile = QString("%1/%2.ini").arg(QUIHelper::appPath()).arg(QUIHelper::appName());
AppConfig::readConfig();
- AppConfig::readSendData();
- AppConfig::readDeviceData();
+
+ AppData::Intervals << "1" << "10" << "20" << "50" << "100" << "200" << "300" << "500" << "1000" << "1500" << "2000" << "3000" << "5000" << "10000";
+ AppData::readSendData();
+ AppData::readDeviceData();
frmComTool w;
w.setWindowTitle("串口调试助手 V2021 (QQ: 517216493 WX: feiyangqingyun)");
diff --git a/ffmpegdemo/readme.md b/ffmpegdemo/readme.md
index 994fc00..a712578 100644
--- a/ffmpegdemo/readme.md
+++ b/ffmpegdemo/readme.md
@@ -1,5 +1,5 @@
-### 特别说明
-1. 编译完成以后记得将dll文件复制到可执行文件同一目录。
+### 特别说明
+1. 编译完成以后记得将动态库文件复制到可执行文件同一目录。
2. 动态库地址:[https://pan.baidu.com/s/13LDRu6mXC6gaADtrGprNVA](https://pan.baidu.com/s/13LDRu6mXC6gaADtrGprNVA) 提取码: ujm7
3. 收费增强版:[https://qtchina.blog.csdn.net/article/details/103946731](https://qtchina.blog.csdn.net/article/details/103946731)
diff --git a/nettool/api/api.pri b/nettool/api/api.pri
index 1b33126..6448d50 100644
--- a/nettool/api/api.pri
+++ b/nettool/api/api.pri
@@ -1,8 +1,10 @@
-HEADERS += $$PWD/appconfig.h
+HEADERS += $$PWD/appconfig.h \
+ $$PWD/appdata.h
HEADERS += $$PWD/tcpclient.h
HEADERS += $$PWD/tcpserver.h
-SOURCES += $$PWD/appconfig.cpp
+SOURCES += $$PWD/appconfig.cpp \
+ $$PWD/appdata.cpp
SOURCES += $$PWD/tcpclient.cpp
SOURCES += $$PWD/tcpserver.cpp
diff --git a/nettool/api/appconfig.cpp b/nettool/api/appconfig.cpp
index 75f370c..8eb3cc3 100644
--- a/nettool/api/appconfig.cpp
+++ b/nettool/api/appconfig.cpp
@@ -2,9 +2,6 @@
#include "quihelper.h"
QString AppConfig::ConfigFile = "config.ini";
-QString AppConfig::SendFileName = "send.txt";
-QString AppConfig::DeviceFileName = "device.txt";
-
int AppConfig::CurrentIndex = 0;
bool AppConfig::HexSendTcpClient = false;
@@ -13,6 +10,8 @@ bool AppConfig::AsciiTcpClient = false;
bool AppConfig::DebugTcpClient = false;
bool AppConfig::AutoSendTcpClient = false;
int AppConfig::IntervalTcpClient = 1000;
+QString AppConfig::TcpBindIP = "127.0.0.1";
+int AppConfig::TcpBindPort = 6001;
QString AppConfig::TcpServerIP = "127.0.0.1";
int AppConfig::TcpServerPort = 6000;
@@ -32,6 +31,8 @@ bool AppConfig::AsciiUdpClient = false;
bool AppConfig::DebugUdpClient = false;
bool AppConfig::AutoSendUdpClient = false;
int AppConfig::IntervalUdpClient = 1000;
+QString AppConfig::UdpBindIP = "127.0.0.1";
+int AppConfig::UdpBindPort = 6001;
QString AppConfig::UdpServerIP = "127.0.0.1";
int AppConfig::UdpServerPort = 6000;
@@ -84,6 +85,8 @@ void AppConfig::readConfig()
AppConfig::DebugTcpClient = set.value("DebugTcpClient", AppConfig::DebugTcpClient).toBool();
AppConfig::AutoSendTcpClient = set.value("AutoSendTcpClient", AppConfig::AutoSendTcpClient).toBool();
AppConfig::IntervalTcpClient = set.value("IntervalTcpClient", AppConfig::IntervalTcpClient).toInt();
+ AppConfig::TcpBindIP = set.value("TcpBindIP", AppConfig::TcpBindIP).toString();
+ AppConfig::TcpBindPort = set.value("TcpBindPort", AppConfig::TcpBindPort).toInt();
AppConfig::TcpServerIP = set.value("TcpServerIP", AppConfig::TcpServerIP).toString();
AppConfig::TcpServerPort = set.value("TcpServerPort", AppConfig::TcpServerPort).toInt();
set.endGroup();
@@ -107,6 +110,8 @@ void AppConfig::readConfig()
AppConfig::DebugUdpClient = set.value("DebugUdpClient", AppConfig::DebugUdpClient).toBool();
AppConfig::AutoSendUdpClient = set.value("AutoSendUdpClient", AppConfig::AutoSendUdpClient).toBool();
AppConfig::IntervalUdpClient = set.value("IntervalUdpClient", AppConfig::IntervalUdpClient).toInt();
+ AppConfig::UdpBindIP = set.value("UdpBindIP", AppConfig::UdpBindIP).toString();
+ AppConfig::UdpBindPort = set.value("UdpBindPort", AppConfig::UdpBindPort).toInt();
AppConfig::UdpServerIP = set.value("UdpServerIP", AppConfig::UdpServerIP).toString();
AppConfig::UdpServerPort = set.value("UdpServerPort", AppConfig::UdpServerPort).toInt();
set.endGroup();
@@ -161,6 +166,8 @@ void AppConfig::writeConfig()
set.setValue("DebugTcpClient", AppConfig::DebugTcpClient);
set.setValue("AutoSendTcpClient", AppConfig::AutoSendTcpClient);
set.setValue("IntervalTcpClient", AppConfig::IntervalTcpClient);
+ set.setValue("TcpBindIP", AppConfig::TcpBindIP);
+ set.setValue("TcpBindPort", AppConfig::TcpBindPort);
set.setValue("TcpServerIP", AppConfig::TcpServerIP);
set.setValue("TcpServerPort", AppConfig::TcpServerPort);
set.endGroup();
@@ -182,6 +189,8 @@ void AppConfig::writeConfig()
set.setValue("DebugUdpClient", AppConfig::DebugUdpClient);
set.setValue("AutoSendUdpClient", AppConfig::AutoSendUdpClient);
set.setValue("IntervalUdpClient", AppConfig::IntervalUdpClient);
+ set.setValue("UdpBindIP", AppConfig::UdpBindIP);
+ set.setValue("UdpBindPort", AppConfig::UdpBindPort);
set.setValue("UdpServerIP", AppConfig::UdpServerIP);
set.setValue("UdpServerPort", AppConfig::UdpServerPort);
set.endGroup();
@@ -218,79 +227,3 @@ void AppConfig::writeConfig()
set.setValue("SelectAllWebServer", AppConfig::SelectAllWebServer);
set.endGroup();
}
-
-QStringList AppConfig::Intervals = QStringList();
-QStringList AppConfig::Datas = QStringList();
-QStringList AppConfig::Keys = QStringList();
-QStringList AppConfig::Values = QStringList();
-
-void AppConfig::readSendData()
-{
- //读取发送数据列表
- AppConfig::Datas.clear();
- QString fileName = QString("%1/%2").arg(QUIHelper::appPath()).arg(AppConfig::SendFileName);
- QFile file(fileName);
- if (file.size() > 0 && file.open(QFile::ReadOnly | QIODevice::Text)) {
- while (!file.atEnd()) {
- QString line = file.readLine();
- line = line.trimmed();
- line = line.replace("\r", "");
- line = line.replace("\n", "");
- if (!line.isEmpty()) {
- AppConfig::Datas.append(line);
- }
- }
-
- file.close();
- }
-
- if (AppConfig::Datas.count() == 0) {
- AppConfig::Datas << "16 FF 01 01 E0 E1" << "16 FF 01 01 E1 E2";
- }
-}
-
-void AppConfig::readDeviceData()
-{
- //读取转发数据列表
- AppConfig::Keys.clear();
- AppConfig::Values.clear();
- QString fileName = QString("%1/%2").arg(QUIHelper::appPath()).arg(AppConfig::DeviceFileName);
- QFile file(fileName);
- if (file.size() > 0 && file.open(QFile::ReadOnly | QIODevice::Text)) {
- while (!file.atEnd()) {
- QString line = file.readLine();
- line = line.trimmed();
- line = line.replace("\r", "");
- line = line.replace("\n", "");
- if (!line.isEmpty()) {
- QStringList list = line.split(";");
- QString key = list.at(0);
- QString value;
- for (int i = 1; i < list.count(); i++) {
- value += QString("%1;").arg(list.at(i));
- }
-
- //去掉末尾分号
- value = value.mid(0, value.length() - 1);
- AppConfig::Keys.append(key);
- AppConfig::Values.append(value);
- }
- }
-
- file.close();
- }
-}
-
-void AppConfig::saveData(const QString &data)
-{
- if (data.length() <= 0) {
- return;
- }
-
- QString fileName = QString("%1/%2.txt").arg(QUIHelper::appPath()).arg(STRDATETIME);
- QFile file(fileName);
- if (file.open(QFile::WriteOnly | QFile::Text)) {
- file.write(data.toUtf8());
- file.close();
- }
-}
diff --git a/nettool/api/appconfig.h b/nettool/api/appconfig.h
index 5ae0beb..663c205 100644
--- a/nettool/api/appconfig.h
+++ b/nettool/api/appconfig.h
@@ -7,9 +7,6 @@ class AppConfig
{
public:
static QString ConfigFile; //配置文件路径
- static QString SendFileName; //发送配置文件名
- static QString DeviceFileName; //模拟设备数据文件名
-
static int CurrentIndex; //当前索引
//TCP客户端配置参数
@@ -19,7 +16,9 @@ public:
static bool DebugTcpClient; //启用数据调试
static bool AutoSendTcpClient; //自动发送数据
static int IntervalTcpClient; //发送数据间隔
- static QString TcpServerIP; //服务器IP
+ static QString TcpBindIP; //绑定地址
+ static int TcpBindPort; //绑定端口
+ static QString TcpServerIP; //服务器地址
static int TcpServerPort; //服务器端口
//TCP服务器配置参数
@@ -40,7 +39,9 @@ public:
static bool DebugUdpClient; //启用数据调试
static bool AutoSendUdpClient; //自动发送数据
static int IntervalUdpClient; //发送数据间隔
- static QString UdpServerIP; //服务器IP
+ static QString UdpBindIP; //绑定地址
+ static int UdpBindPort; //绑定端口
+ static QString UdpServerIP; //服务器地址
static int UdpServerPort; //服务器端口
//UDP服务器配置参数
@@ -61,7 +62,7 @@ public:
static bool DebugWebClient; //启用数据调试
static bool AutoSendWebClient; //自动发送数据
static int IntervalWebClient; //发送数据间隔
- static QString WebServerIP; //服务器IP
+ static QString WebServerIP; //服务器地址
static int WebServerPort; //服务器端口
//WEB服务器配置参数
@@ -75,17 +76,9 @@ public:
static int WebListenPort; //监听端口
static bool SelectAllWebServer; //选中所有
- //读写配置参数及其他操作
+ //读写配置参数
static void readConfig(); //读取配置参数
static void writeConfig(); //写入配置参数
-
- static QStringList Intervals;
- static QStringList Datas;
- static QStringList Keys;
- static QStringList Values;
- static void readSendData();
- static void readDeviceData();
- static void saveData(const QString &data);
};
#endif // APPCONFIG_H
diff --git a/nettool/api/appdata.cpp b/nettool/api/appdata.cpp
new file mode 100644
index 0000000..7cbf7fa
--- /dev/null
+++ b/nettool/api/appdata.cpp
@@ -0,0 +1,92 @@
+#include "appdata.h"
+#include "quihelper.h"
+
+QStringList AppData::Intervals = QStringList();
+QStringList AppData::Datas = QStringList();
+QStringList AppData::Keys = QStringList();
+QStringList AppData::Values = QStringList();
+
+QString AppData::SendFileName = "send.txt";
+void AppData::readSendData()
+{
+ //读取发送数据列表
+ AppData::Datas.clear();
+ QString fileName = QString("%1/%2").arg(QUIHelper::appPath()).arg(AppData::SendFileName);
+ QFile file(fileName);
+ if (file.size() > 0 && file.open(QFile::ReadOnly | QIODevice::Text)) {
+ while (!file.atEnd()) {
+ QString line = file.readLine();
+ line = line.trimmed();
+ line = line.replace("\r", "");
+ line = line.replace("\n", "");
+ if (!line.isEmpty()) {
+ AppData::Datas.append(line);
+ }
+ }
+
+ file.close();
+ }
+
+ //没有的时候主动添加点免得太空
+ if (AppData::Datas.count() == 0) {
+ AppData::Datas << "16 FF 01 01 E0 E1" << "16 FF 01 01 E1 E2";
+ }
+}
+
+QString AppData::DeviceFileName = "device.txt";
+void AppData::readDeviceData()
+{
+ //读取转发数据列表
+ AppData::Keys.clear();
+ AppData::Values.clear();
+ QString fileName = QString("%1/%2").arg(QUIHelper::appPath()).arg(AppData::DeviceFileName);
+ QFile file(fileName);
+ if (file.size() > 0 && file.open(QFile::ReadOnly | QIODevice::Text)) {
+ while (!file.atEnd()) {
+ QString line = file.readLine();
+ line = line.trimmed();
+ line = line.replace("\r", "");
+ line = line.replace("\n", "");
+ if (!line.isEmpty()) {
+ QStringList list = line.split(";");
+ QString key = list.at(0);
+ QString value;
+ for (int i = 1; i < list.count(); i++) {
+ value += QString("%1;").arg(list.at(i));
+ }
+
+ //去掉末尾分号
+ value = value.mid(0, value.length() - 1);
+ AppData::Keys.append(key);
+ AppData::Values.append(value);
+ }
+ }
+
+ file.close();
+ }
+}
+
+void AppData::saveData(const QString &data)
+{
+ if (data.length() <= 0) {
+ return;
+ }
+
+ QString fileName = QString("%1/%2.txt").arg(QUIHelper::appPath()).arg(STRDATETIME);
+ QFile file(fileName);
+ if (file.open(QFile::WriteOnly | QFile::Text)) {
+ file.write(data.toUtf8());
+ file.close();
+ }
+}
+
+void AppData::loadIP(QComboBox *cbox)
+{
+ //获取本机所有IP
+ QStringList ips = QUIHelper::getLocalIPs();
+ cbox->clear();
+ cbox->addItems(ips);
+ if (!ips.contains("127.0.0.1")) {
+ cbox->addItem("127.0.0.1");
+ }
+}
diff --git a/nettool/api/appdata.h b/nettool/api/appdata.h
new file mode 100644
index 0000000..13091c7
--- /dev/null
+++ b/nettool/api/appdata.h
@@ -0,0 +1,30 @@
+#ifndef APPDATA_H
+#define APPDATA_H
+
+#include "head.h"
+
+class AppData
+{
+public:
+ //全局变量
+ static QStringList Intervals;
+ static QStringList Datas;
+ static QStringList Keys;
+ static QStringList Values;
+
+ //读取发送数据列表
+ static QString SendFileName;
+ static void readSendData();
+
+ //读取转发数据列表
+ static QString DeviceFileName;
+ static void readDeviceData();
+
+ //保存数据到文件
+ static void saveData(const QString &data);
+
+ //添加网卡IP地址到下拉框
+ static void loadIP(QComboBox *cbox);
+};
+
+#endif // APPDATA_H
diff --git a/nettool/api/tcpclient.cpp b/nettool/api/tcpclient.cpp
index 335b314..ba39afd 100644
--- a/nettool/api/tcpclient.cpp
+++ b/nettool/api/tcpclient.cpp
@@ -8,7 +8,11 @@ TcpClient::TcpClient(QTcpSocket *socket, QObject *parent) : QObject(parent)
ip = ip.replace("::ffff:", "");
port = socket->peerPort();
+#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
+ connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)),this, SLOT(disconnected()));
+#else
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(disconnected()));
+#endif
connect(socket, SIGNAL(disconnected()), this, SLOT(disconnected()));
connect(socket, SIGNAL(readyRead()), this, SLOT(readData()));
}
@@ -50,10 +54,10 @@ void TcpClient::readData()
//自动回复数据,可以回复的数据是以;隔开,每行可以带多个;所以这里不需要继续判断
if (AppConfig::DebugTcpServer) {
- int count = AppConfig::Keys.count();
+ int count = AppData::Keys.count();
for (int i = 0; i < count; i++) {
- if (AppConfig::Keys.at(i) == buffer) {
- sendData(AppConfig::Values.at(i));
+ if (AppData::Keys.at(i) == buffer) {
+ sendData(AppData::Values.at(i));
break;
}
}
diff --git a/nettool/api/webclient.cpp b/nettool/api/webclient.cpp
index 12d5423..93c5a5d 100644
--- a/nettool/api/webclient.cpp
+++ b/nettool/api/webclient.cpp
@@ -43,10 +43,10 @@ void WebClient::textFrameReceived(const QString &data, bool isLastFrame)
//自动回复数据,可以回复的数据是以;隔开,每行可以带多个;所以这里不需要继续判断
if (AppConfig::DebugWebServer) {
- int count = AppConfig::Keys.count();
+ int count = AppData::Keys.count();
for (int i = 0; i < count; i++) {
- if (AppConfig::Keys.at(i) == buffer) {
- sendData(AppConfig::Values.at(i));
+ if (AppData::Keys.at(i) == buffer) {
+ sendData(AppData::Values.at(i));
break;
}
}
diff --git a/nettool/form/frmtcpclient.cpp b/nettool/form/frmtcpclient.cpp
index ac19d8b..c0ba775 100644
--- a/nettool/form/frmtcpclient.cpp
+++ b/nettool/form/frmtcpclient.cpp
@@ -17,18 +17,28 @@ frmTcpClient::~frmTcpClient()
void frmTcpClient::initForm()
{
isOk = false;
+
+ //实例化对象并绑定信号槽
socket = new QTcpSocket(this);
connect(socket, SIGNAL(connected()), this, SLOT(connected()));
+#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
+ connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)),this, SLOT(disconnected()));
+#else
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(disconnected()));
+#endif
connect(socket, SIGNAL(disconnected()), this, SLOT(disconnected()));
connect(socket, SIGNAL(readyRead()), this, SLOT(readData()));
+ //定时器发送数据
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(on_btnSend_clicked()));
- ui->cboxInterval->addItems(AppConfig::Intervals);
- ui->cboxData->addItems(AppConfig::Datas);
+ //填充数据到下拉框
+ ui->cboxInterval->addItems(AppData::Intervals);
+ ui->cboxData->addItems(AppData::Datas);
+ AppData::loadIP(ui->cboxBindIP);
+ //打印下外网地址
#ifndef emsdk
QString ip = QUIHelper::getNetIP(QUIHelper::getHtml("http://whois.pconline.com.cn/"));
append(1, QString("外网IP -> %1").arg(ip));
@@ -55,13 +65,19 @@ void frmTcpClient::initConfig()
ui->cboxInterval->setCurrentIndex(ui->cboxInterval->findText(QString::number(AppConfig::IntervalTcpClient)));
connect(ui->cboxInterval, SIGNAL(currentIndexChanged(int)), this, SLOT(saveConfig()));
+ ui->cboxBindIP->setCurrentIndex(ui->cboxBindIP->findText(AppConfig::TcpBindIP));
+ connect(ui->cboxBindIP, SIGNAL(currentIndexChanged(int)), this, SLOT(saveConfig()));
+
+ ui->txtBindPort->setText(QString::number(AppConfig::TcpBindPort));
+ connect(ui->txtBindPort, SIGNAL(textChanged(QString)), this, SLOT(saveConfig()));
+
ui->txtServerIP->setText(AppConfig::TcpServerIP);
connect(ui->txtServerIP, SIGNAL(textChanged(QString)), this, SLOT(saveConfig()));
ui->txtServerPort->setText(QString::number(AppConfig::TcpServerPort));
connect(ui->txtServerPort, SIGNAL(textChanged(QString)), this, SLOT(saveConfig()));
- this->changeTimer();
+ this->initTimer();
}
void frmTcpClient::saveConfig()
@@ -72,16 +88,21 @@ void frmTcpClient::saveConfig()
AppConfig::DebugTcpClient = ui->ckDebug->isChecked();
AppConfig::AutoSendTcpClient = ui->ckAutoSend->isChecked();
AppConfig::IntervalTcpClient = ui->cboxInterval->currentText().toInt();
+ AppConfig::TcpBindIP = ui->cboxBindIP->currentText();
+ AppConfig::TcpBindPort = ui->txtBindPort->text().trimmed().toInt();
AppConfig::TcpServerIP = ui->txtServerIP->text().trimmed();
AppConfig::TcpServerPort = ui->txtServerPort->text().trimmed().toInt();
AppConfig::writeConfig();
- this->changeTimer();
+ this->initTimer();
}
-void frmTcpClient::changeTimer()
+void frmTcpClient::initTimer()
{
- timer->setInterval(AppConfig::IntervalTcpClient);
+ if (timer->interval() != AppConfig::IntervalTcpClient) {
+ timer->setInterval(AppConfig::IntervalTcpClient);
+ }
+
if (AppConfig::AutoSendTcpClient) {
if (!timer->isActive()) {
timer->start();
@@ -168,10 +189,10 @@ void frmTcpClient::readData()
//自动回复数据,可以回复的数据是以;隔开,每行可以带多个;所以这里不需要继续判断
if (AppConfig::DebugTcpClient) {
- int count = AppConfig::Keys.count();
+ int count = AppData::Keys.count();
for (int i = 0; i < count; i++) {
- if (AppConfig::Keys.at(i) == buffer) {
- sendData(AppConfig::Values.at(i));
+ if (AppData::Keys.at(i) == buffer) {
+ sendData(AppData::Values.at(i));
break;
}
}
@@ -196,7 +217,13 @@ void frmTcpClient::sendData(const QString &data)
void frmTcpClient::on_btnConnect_clicked()
{
if (ui->btnConnect->text() == "连接") {
+ //断开所有连接和操作
socket->abort();
+ //绑定网卡和端口
+#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
+ socket->bind(QHostAddress(AppConfig::TcpBindIP), AppConfig::TcpBindPort);
+#endif
+ //连接服务器
socket->connectToHost(AppConfig::TcpServerIP, AppConfig::TcpServerPort);
} else {
socket->abort();
@@ -206,7 +233,7 @@ void frmTcpClient::on_btnConnect_clicked()
void frmTcpClient::on_btnSave_clicked()
{
QString data = ui->txtMain->toPlainText();
- AppConfig::saveData(data);
+ AppData::saveData(data);
on_btnClear_clicked();
}
diff --git a/nettool/form/frmtcpclient.h b/nettool/form/frmtcpclient.h
index 31efd8f..66c88ed 100644
--- a/nettool/form/frmtcpclient.h
+++ b/nettool/form/frmtcpclient.h
@@ -27,7 +27,7 @@ private slots:
void initForm();
void initConfig();
void saveConfig();
- void changeTimer();
+ void initTimer();
void append(int type, const QString &data, bool clear = false);
private slots:
diff --git a/nettool/form/frmtcpclient.ui b/nettool/form/frmtcpclient.ui
index 0c4cd9f..4675e0e 100644
--- a/nettool/form/frmtcpclient.ui
+++ b/nettool/form/frmtcpclient.ui
@@ -53,7 +53,7 @@
QFrame::Sunken
-
+
6
@@ -111,6 +111,26 @@
-
+ -
+
+
+ 绑定地址
+
+
+
+ -
+
+
+ -
+
+
+ 绑定端口
+
+
+
+ -
+
+
-
@@ -220,6 +240,25 @@
+
+ txtMain
+ cboxData
+ btnSend
+ ckHexReceive
+ ckHexSend
+ ckAscii
+ ckShow
+ ckDebug
+ ckAutoSend
+ cboxInterval
+ cboxBindIP
+ txtBindPort
+ txtServerIP
+ txtServerPort
+ btnConnect
+ btnSave
+ btnClear
+
diff --git a/nettool/form/frmtcpserver.cpp b/nettool/form/frmtcpserver.cpp
index 5ea4938..006a257 100644
--- a/nettool/form/frmtcpserver.cpp
+++ b/nettool/form/frmtcpserver.cpp
@@ -17,24 +17,22 @@ frmTcpServer::~frmTcpServer()
void frmTcpServer::initForm()
{
isOk = false;
+
+ //实例化对象并绑定信号槽
server = new TcpServer(this);
connect(server, SIGNAL(clientConnected(QString, int)), this, SLOT(clientConnected(QString, int)));
connect(server, SIGNAL(clientDisconnected(QString, int)), this, SLOT(clientDisconnected(QString, int)));
connect(server, SIGNAL(sendData(QString, int, QString)), this, SLOT(sendData(QString, int, QString)));
connect(server, SIGNAL(receiveData(QString, int, QString)), this, SLOT(receiveData(QString, int, QString)));
+ //定时器发送数据
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(on_btnSend_clicked()));
- ui->cboxInterval->addItems(AppConfig::Intervals);
- ui->cboxData->addItems(AppConfig::Datas);
-
- //获取本机所有IP
- QStringList ips = QUIHelper::getLocalIPs();
- ui->cboxListenIP->addItems(ips);
- if (!ips.contains("127.0.0.1")) {
- ui->cboxListenIP->addItem("127.0.0.1");
- }
+ //填充数据到下拉框
+ ui->cboxInterval->addItems(AppData::Intervals);
+ ui->cboxData->addItems(AppData::Datas);
+ AppData::loadIP(ui->cboxListenIP);
}
void frmTcpServer::initConfig()
@@ -66,7 +64,7 @@ void frmTcpServer::initConfig()
ui->ckSelectAll->setChecked(AppConfig::SelectAllTcpServer);
connect(ui->ckSelectAll, SIGNAL(stateChanged(int)), this, SLOT(saveConfig()));
- this->changeTimer();
+ this->initTimer();
}
void frmTcpServer::saveConfig()
@@ -82,12 +80,15 @@ void frmTcpServer::saveConfig()
AppConfig::SelectAllTcpServer = ui->ckSelectAll->isChecked();
AppConfig::writeConfig();
- this->changeTimer();
+ this->initTimer();
}
-void frmTcpServer::changeTimer()
+void frmTcpServer::initTimer()
{
- timer->setInterval(AppConfig::IntervalTcpServer);
+ if (timer->interval() != AppConfig::IntervalTcpServer) {
+ timer->setInterval(AppConfig::IntervalTcpServer);
+ }
+
if (AppConfig::AutoSendTcpServer) {
if (!timer->isActive()) {
timer->start();
@@ -192,7 +193,7 @@ void frmTcpServer::on_btnListen_clicked()
void frmTcpServer::on_btnSave_clicked()
{
QString data = ui->txtMain->toPlainText();
- AppConfig::saveData(data);
+ AppData::saveData(data);
on_btnClear_clicked();
}
diff --git a/nettool/form/frmtcpserver.h b/nettool/form/frmtcpserver.h
index 77174e9..49b51cf 100644
--- a/nettool/form/frmtcpserver.h
+++ b/nettool/form/frmtcpserver.h
@@ -27,7 +27,7 @@ private slots:
void initForm();
void initConfig();
void saveConfig();
- void changeTimer();
+ void initTimer();
void append(int type, const QString &data, bool clear = false);
private slots:
diff --git a/nettool/form/frmtcpserver.ui b/nettool/form/frmtcpserver.ui
index 48ea61f..1f8d387 100644
--- a/nettool/form/frmtcpserver.ui
+++ b/nettool/form/frmtcpserver.ui
@@ -248,6 +248,8 @@
txtMain
+ cboxData
+ btnSend
ckHexReceive
ckHexSend
ckAscii
@@ -263,8 +265,6 @@
btnClose
listWidget
ckSelectAll
- cboxData
- btnSend
diff --git a/nettool/form/frmudpclient.cpp b/nettool/form/frmudpclient.cpp
index c24e9e4..94b2c1e 100644
--- a/nettool/form/frmudpclient.cpp
+++ b/nettool/form/frmudpclient.cpp
@@ -16,14 +16,18 @@ frmUdpClient::~frmUdpClient()
void frmUdpClient::initForm()
{
+ //实例化对象并绑定信号槽
socket = new QUdpSocket(this);
connect(socket, SIGNAL(readyRead()), this, SLOT(readData()));
+ //定时器发送数据
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(on_btnSend_clicked()));
- ui->cboxInterval->addItems(AppConfig::Intervals);
- ui->cboxData->addItems(AppConfig::Datas);
+ //填充数据到下拉框
+ ui->cboxInterval->addItems(AppData::Intervals);
+ ui->cboxData->addItems(AppData::Datas);
+ AppData::loadIP(ui->cboxBindIP);
}
void frmUdpClient::initConfig()
@@ -46,13 +50,19 @@ void frmUdpClient::initConfig()
ui->cboxInterval->setCurrentIndex(ui->cboxInterval->findText(QString::number(AppConfig::IntervalUdpClient)));
connect(ui->cboxInterval, SIGNAL(currentIndexChanged(int)), this, SLOT(saveConfig()));
+ ui->cboxBindIP->setCurrentIndex(ui->cboxBindIP->findText(AppConfig::UdpBindIP));
+ connect(ui->cboxBindIP, SIGNAL(currentIndexChanged(int)), this, SLOT(saveConfig()));
+
+ ui->txtBindPort->setText(QString::number(AppConfig::UdpBindPort));
+ connect(ui->txtBindPort, SIGNAL(textChanged(QString)), this, SLOT(saveConfig()));
+
ui->txtServerIP->setText(AppConfig::UdpServerIP);
connect(ui->txtServerIP, SIGNAL(textChanged(QString)), this, SLOT(saveConfig()));
ui->txtServerPort->setText(QString::number(AppConfig::UdpServerPort));
connect(ui->txtServerPort, SIGNAL(textChanged(QString)), this, SLOT(saveConfig()));
- this->changeTimer();
+ this->initTimer();
}
void frmUdpClient::saveConfig()
@@ -63,16 +73,21 @@ void frmUdpClient::saveConfig()
AppConfig::DebugUdpClient = ui->ckDebug->isChecked();
AppConfig::AutoSendUdpClient = ui->ckAutoSend->isChecked();
AppConfig::IntervalUdpClient = ui->cboxInterval->currentText().toInt();
+ AppConfig::UdpBindIP = ui->cboxBindIP->currentText();
+ AppConfig::UdpBindPort = ui->txtBindPort->text().trimmed().toInt();
AppConfig::UdpServerIP = ui->txtServerIP->text().trimmed();
AppConfig::UdpServerPort = ui->txtServerPort->text().trimmed().toInt();
AppConfig::writeConfig();
- this->changeTimer();
+ this->initTimer();
}
-void frmUdpClient::changeTimer()
+void frmUdpClient::initTimer()
{
- timer->setInterval(AppConfig::IntervalUdpClient);
+ if (timer->interval() != AppConfig::IntervalUdpClient) {
+ timer->setInterval(AppConfig::IntervalUdpClient);
+ }
+
if (AppConfig::AutoSendUdpClient) {
if (!timer->isActive()) {
timer->start();
@@ -153,10 +168,10 @@ void frmUdpClient::readData()
append(1, str);
if (AppConfig::DebugUdpClient) {
- int count = AppConfig::Keys.count();
+ int count = AppData::Keys.count();
for (int i = 0; i < count; i++) {
- if (AppConfig::Keys.at(i) == buffer) {
- sendData(ip, port, AppConfig::Values.at(i));
+ if (AppData::Keys.at(i) == buffer) {
+ sendData(ip, port, AppData::Values.at(i));
break;
}
}
@@ -175,6 +190,13 @@ void frmUdpClient::sendData(const QString &ip, int port, const QString &data)
buffer = data.toUtf8();
}
+ //绑定网卡和端口
+ if (socket->localPort() != AppConfig::UdpBindPort) {
+ socket->abort();
+ socket->bind(QHostAddress(AppConfig::UdpBindIP), AppConfig::UdpBindPort);
+ }
+
+ //指定地址和端口发送数据
socket->writeDatagram(buffer, QHostAddress(ip), port);
QString str = QString("[%1:%2] %3").arg(ip).arg(port).arg(data);
@@ -184,7 +206,7 @@ void frmUdpClient::sendData(const QString &ip, int port, const QString &data)
void frmUdpClient::on_btnSave_clicked()
{
QString data = ui->txtMain->toPlainText();
- AppConfig::saveData(data);
+ AppData::saveData(data);
on_btnClear_clicked();
}
diff --git a/nettool/form/frmudpclient.h b/nettool/form/frmudpclient.h
index 762607f..89c85b0 100644
--- a/nettool/form/frmudpclient.h
+++ b/nettool/form/frmudpclient.h
@@ -26,7 +26,7 @@ private slots:
void initForm();
void initConfig();
void saveConfig();
- void changeTimer();
+ void initTimer();
void append(int type, const QString &data, bool clear = false);
private slots:
diff --git a/nettool/form/frmudpclient.ui b/nettool/form/frmudpclient.ui
index 70d430c..360a19e 100644
--- a/nettool/form/frmudpclient.ui
+++ b/nettool/form/frmudpclient.ui
@@ -53,7 +53,7 @@
QFrame::Sunken
-
+
6
@@ -111,10 +111,30 @@
-
+ -
+
+
+ 绑定地址
+
+
+
+ -
+
+
+ -
+
+
+ 绑定端口
+
+
+
+ -
+
+
-
- 远程地址
+ 服务器地址
@@ -124,7 +144,7 @@
-
- 远程端口
+ 服务器端口
@@ -213,6 +233,24 @@
+
+ txtMain
+ cboxData
+ btnSend
+ ckHexReceive
+ ckHexSend
+ ckAscii
+ ckShow
+ ckDebug
+ ckAutoSend
+ cboxInterval
+ cboxBindIP
+ txtBindPort
+ txtServerIP
+ txtServerPort
+ btnSave
+ btnClear
+
diff --git a/nettool/form/frmudpserver.cpp b/nettool/form/frmudpserver.cpp
index 42775d5..f61388a 100644
--- a/nettool/form/frmudpserver.cpp
+++ b/nettool/form/frmudpserver.cpp
@@ -16,21 +16,18 @@ frmUdpServer::~frmUdpServer()
void frmUdpServer::initForm()
{
+ //实例化对象并绑定信号槽
socket = new QUdpSocket(this);
connect(socket, SIGNAL(readyRead()), this, SLOT(readData()));
+ //定时器发送数据
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(on_btnSend_clicked()));
- ui->cboxInterval->addItems(AppConfig::Intervals);
- ui->cboxData->addItems(AppConfig::Datas);
-
- //获取本机所有IP
- QStringList ips = QUIHelper::getLocalIPs();
- ui->cboxListenIP->addItems(ips);
- if (!ips.contains("127.0.0.1")) {
- ui->cboxListenIP->addItem("127.0.0.1");
- }
+ //填充数据到下拉框
+ ui->cboxInterval->addItems(AppData::Intervals);
+ ui->cboxData->addItems(AppData::Datas);
+ AppData::loadIP(ui->cboxListenIP);
}
void frmUdpServer::initConfig()
@@ -62,7 +59,7 @@ void frmUdpServer::initConfig()
ui->ckSelectAll->setChecked(AppConfig::SelectAllUdpServer);
connect(ui->ckSelectAll, SIGNAL(stateChanged(int)), this, SLOT(saveConfig()));
- this->changeTimer();
+ this->initTimer();
}
void frmUdpServer::saveConfig()
@@ -78,12 +75,15 @@ void frmUdpServer::saveConfig()
AppConfig::SelectAllUdpServer = ui->ckSelectAll->isChecked();
AppConfig::writeConfig();
- this->changeTimer();
+ this->initTimer();
}
-void frmUdpServer::changeTimer()
+void frmUdpServer::initTimer()
{
- timer->setInterval(AppConfig::IntervalUdpServer);
+ if (timer->interval() != AppConfig::IntervalUdpServer) {
+ timer->setInterval(AppConfig::IntervalUdpServer);
+ }
+
if (AppConfig::AutoSendUdpServer) {
if (!timer->isActive()) {
timer->start();
@@ -165,10 +165,10 @@ void frmUdpServer::readData()
clientConnected(ip, port);
if (AppConfig::DebugUdpServer) {
- int count = AppConfig::Keys.count();
+ int count = AppData::Keys.count();
for (int i = 0; i < count; i++) {
- if (AppConfig::Keys.at(i) == buffer) {
- sendData(ip, port, AppConfig::Values.at(i));
+ if (AppData::Keys.at(i) == buffer) {
+ sendData(ip, port, AppData::Values.at(i));
break;
}
}
@@ -225,7 +225,7 @@ void frmUdpServer::on_btnListen_clicked()
void frmUdpServer::on_btnSave_clicked()
{
QString data = ui->txtMain->toPlainText();
- AppConfig::saveData(data);
+ AppData::saveData(data);
on_btnClear_clicked();
}
diff --git a/nettool/form/frmudpserver.h b/nettool/form/frmudpserver.h
index 436a779..05e711b 100644
--- a/nettool/form/frmudpserver.h
+++ b/nettool/form/frmudpserver.h
@@ -26,7 +26,7 @@ private slots:
void initForm();
void initConfig();
void saveConfig();
- void changeTimer();
+ void initTimer();
void append(int type, const QString &data, bool clear = false);
private slots:
diff --git a/nettool/form/frmudpserver.ui b/nettool/form/frmudpserver.ui
index 25f8279..97468d2 100644
--- a/nettool/form/frmudpserver.ui
+++ b/nettool/form/frmudpserver.ui
@@ -241,6 +241,8 @@
txtMain
+ cboxData
+ btnSend
ckHexReceive
ckHexSend
ckAscii
@@ -253,8 +255,8 @@
btnListen
btnSave
btnClear
- cboxData
- btnSend
+ listWidget
+ ckSelectAll
diff --git a/nettool/form/frmwebclient.cpp b/nettool/form/frmwebclient.cpp
index 274b132..9fefb11 100644
--- a/nettool/form/frmwebclient.cpp
+++ b/nettool/form/frmwebclient.cpp
@@ -17,6 +17,8 @@ frmWebClient::~frmWebClient()
void frmWebClient::initForm()
{
isOk = false;
+
+ //实例化对象并绑定信号槽
socket = new QWebSocket("WebSocket", QWebSocketProtocol::VersionLatest, this);
connect(socket, SIGNAL(connected()), this, SLOT(connected()));
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(disconnected()));
@@ -29,11 +31,13 @@ void frmWebClient::initForm()
//connect(socket, SIGNAL(textFrameReceived(QString, bool)), this, SLOT(textFrameReceived(QString, bool)));
//connect(socket, SIGNAL(binaryFrameReceived(QByteArray, bool)), this, SLOT(binaryFrameReceived(QByteArray, bool)));
+ //定时器发送数据
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(on_btnSend_clicked()));
- ui->cboxInterval->addItems(AppConfig::Intervals);
- ui->cboxData->addItems(AppConfig::Datas);
+ //填充数据到下拉框
+ ui->cboxInterval->addItems(AppData::Intervals);
+ ui->cboxData->addItems(AppData::Datas);
}
void frmWebClient::initConfig()
@@ -62,7 +66,7 @@ void frmWebClient::initConfig()
ui->txtServerPort->setText(QString::number(AppConfig::WebServerPort));
connect(ui->txtServerPort, SIGNAL(textChanged(QString)), this, SLOT(saveConfig()));
- this->changeTimer();
+ this->initTimer();
}
void frmWebClient::saveConfig()
@@ -77,12 +81,15 @@ void frmWebClient::saveConfig()
AppConfig::WebServerPort = ui->txtServerPort->text().trimmed().toInt();
AppConfig::writeConfig();
- this->changeTimer();
+ this->initTimer();
}
-void frmWebClient::changeTimer()
+void frmWebClient::initTimer()
{
- timer->setInterval(AppConfig::IntervalWebClient);
+ if (timer->interval() != AppConfig::IntervalWebClient) {
+ timer->setInterval(AppConfig::IntervalWebClient);
+ }
+
if (AppConfig::AutoSendWebClient) {
if (!timer->isActive()) {
timer->start();
@@ -174,10 +181,10 @@ void frmWebClient::textFrameReceived(const QString &data, bool isLastFrame)
//自动回复数据,可以回复的数据是以;隔开,每行可以带多个;所以这里不需要继续判断
if (AppConfig::DebugWebClient) {
- int count = AppConfig::Keys.count();
+ int count = AppData::Keys.count();
for (int i = 0; i < count; i++) {
- if (AppConfig::Keys.at(i) == buffer) {
- sendData(AppConfig::Values.at(i));
+ if (AppData::Keys.at(i) == buffer) {
+ sendData(AppData::Values.at(i));
break;
}
}
@@ -220,7 +227,7 @@ void frmWebClient::on_btnConnect_clicked()
void frmWebClient::on_btnSave_clicked()
{
QString data = ui->txtMain->toPlainText();
- AppConfig::saveData(data);
+ AppData::saveData(data);
on_btnClear_clicked();
}
diff --git a/nettool/form/frmwebclient.h b/nettool/form/frmwebclient.h
index ee6f9a4..7533d2f 100644
--- a/nettool/form/frmwebclient.h
+++ b/nettool/form/frmwebclient.h
@@ -27,7 +27,7 @@ private slots:
void initForm();
void initConfig();
void saveConfig();
- void changeTimer();
+ void initTimer();
void append(int type, const QString &data, bool clear = false);
private slots:
diff --git a/nettool/form/frmwebserver.cpp b/nettool/form/frmwebserver.cpp
index fcd2777..792404f 100644
--- a/nettool/form/frmwebserver.cpp
+++ b/nettool/form/frmwebserver.cpp
@@ -17,24 +17,22 @@ frmWebServer::~frmWebServer()
void frmWebServer::initForm()
{
isOk = false;
+
+ //实例化对象并绑定信号槽
server = new WebServer("WebServer", QWebSocketServer::NonSecureMode, this);
connect(server, SIGNAL(clientConnected(QString, int)), this, SLOT(clientConnected(QString, int)));
connect(server, SIGNAL(clientDisconnected(QString, int)), this, SLOT(clientDisconnected(QString, int)));
connect(server, SIGNAL(sendData(QString, int, QString)), this, SLOT(sendData(QString, int, QString)));
connect(server, SIGNAL(receiveData(QString, int, QString)), this, SLOT(receiveData(QString, int, QString)));
+ //定时器发送数据
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(on_btnSend_clicked()));
- ui->cboxInterval->addItems(AppConfig::Intervals);
- ui->cboxData->addItems(AppConfig::Datas);
-
- //获取本机所有IP
- QStringList ips = QUIHelper::getLocalIPs();
- ui->cboxListenIP->addItems(ips);
- if (!ips.contains("127.0.0.1")) {
- ui->cboxListenIP->addItem("127.0.0.1");
- }
+ //填充数据到下拉框
+ ui->cboxInterval->addItems(AppData::Intervals);
+ ui->cboxData->addItems(AppData::Datas);
+ AppData::loadIP(ui->cboxListenIP);
}
void frmWebServer::initConfig()
@@ -66,7 +64,7 @@ void frmWebServer::initConfig()
ui->ckSelectAll->setChecked(AppConfig::SelectAllWebServer);
connect(ui->ckSelectAll, SIGNAL(stateChanged(int)), this, SLOT(saveConfig()));
- this->changeTimer();
+ this->initTimer();
}
void frmWebServer::saveConfig()
@@ -82,12 +80,15 @@ void frmWebServer::saveConfig()
AppConfig::SelectAllWebServer = ui->ckSelectAll->isChecked();
AppConfig::writeConfig();
- this->changeTimer();
+ this->initTimer();
}
-void frmWebServer::changeTimer()
+void frmWebServer::initTimer()
{
- timer->setInterval(AppConfig::IntervalWebServer);
+ if (timer->interval() != AppConfig::IntervalWebServer) {
+ timer->setInterval(AppConfig::IntervalWebServer);
+ }
+
if (AppConfig::AutoSendWebServer) {
if (!timer->isActive()) {
timer->start();
@@ -192,7 +193,7 @@ void frmWebServer::on_btnListen_clicked()
void frmWebServer::on_btnSave_clicked()
{
QString data = ui->txtMain->toPlainText();
- AppConfig::saveData(data);
+ AppData::saveData(data);
on_btnClear_clicked();
}
diff --git a/nettool/form/frmwebserver.h b/nettool/form/frmwebserver.h
index 9048bd8..c09b11b 100644
--- a/nettool/form/frmwebserver.h
+++ b/nettool/form/frmwebserver.h
@@ -27,7 +27,7 @@ private slots:
void initForm();
void initConfig();
void saveConfig();
- void changeTimer();
+ void initTimer();
void append(int type, const QString &data, bool clear = false);
private slots:
diff --git a/nettool/form/frmwebserver.ui b/nettool/form/frmwebserver.ui
index 964ad6e..1b3fc76 100644
--- a/nettool/form/frmwebserver.ui
+++ b/nettool/form/frmwebserver.ui
@@ -246,6 +246,26 @@
+
+ txtMain
+ cboxData
+ btnSend
+ ckHexReceive
+ ckHexSend
+ ckAscii
+ ckShow
+ ckDebug
+ ckAutoSend
+ cboxInterval
+ cboxListenIP
+ txtListenPort
+ btnListen
+ btnSave
+ btnClear
+ btnClose
+ listWidget
+ ckSelectAll
+
diff --git a/nettool/head.h b/nettool/head.h
index 7adfea8..612e37c 100644
--- a/nettool/head.h
+++ b/nettool/head.h
@@ -15,3 +15,4 @@
#pragma execution_character_set("utf-8")
#include "appconfig.h"
+#include "appdata.h"
diff --git a/nettool/main.cpp b/nettool/main.cpp
index 3d1ad9d..f802695 100644
--- a/nettool/main.cpp
+++ b/nettool/main.cpp
@@ -13,11 +13,12 @@ int main(int argc, char *argv[])
QUIHelper::setTranslator(":/widgets.qm");
QUIHelper::initRand();
- AppConfig::Intervals << "1" << "10" << "20" << "50" << "100" << "200" << "300" << "500" << "1000" << "1500" << "2000" << "3000" << "5000" << "10000";
AppConfig::ConfigFile = QString("%1/%2.ini").arg(QUIHelper::appPath()).arg(QUIHelper::appName());
AppConfig::readConfig();
- AppConfig::readSendData();
- AppConfig::readDeviceData();
+
+ AppData::Intervals << "1" << "10" << "20" << "50" << "100" << "200" << "300" << "500" << "1000" << "1500" << "2000" << "3000" << "5000" << "10000";
+ AppData::readSendData();
+ AppData::readDeviceData();
frmMain w;
w.setWindowTitle("网络调试助手 V2021 (QQ: 517216493 WX: feiyangqingyun)");
diff --git a/vlcdemo/readme.md b/vlcdemo/readme.md
index d65e1a8..9ddf8eb 100644
--- a/vlcdemo/readme.md
+++ b/vlcdemo/readme.md
@@ -1,5 +1,5 @@
-### 特别说明
-1. 编译完成以后记得将dll文件复制到可执行文件同一目录。
+### 特别说明
+1. 编译完成以后记得将动态库文件复制到可执行文件同一目录。
2. 动态库地址:[https://pan.baidu.com/s/13LDRu6mXC6gaADtrGprNVA](https://pan.baidu.com/s/13LDRu6mXC6gaADtrGprNVA) 提取码: ujm7
3. 收费增强版:[https://qtchina.blog.csdn.net/article/details/103946067](https://qtchina.blog.csdn.net/article/details/103946067)