改进代码

master
feiyangqingyun 2021-08-21 16:10:22 +08:00
parent 978f0a588d
commit 81716767f1
7 changed files with 62 additions and 24 deletions

View File

@ -44,6 +44,7 @@ bool TcpServer::start()
void TcpServer::stop()
{
remove();
this->disconnected();
this->close();
}

View File

@ -22,7 +22,7 @@ void frmTcpClient::initForm()
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()));
connect(socket, SIGNAL(errorOccurred(QAbstractSocket::SocketError)), this, SLOT(disconnected()));
#else
connect(socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(disconnected()));
#endif
@ -143,10 +143,13 @@ void frmTcpClient::append(int type, const QString &data, bool clear)
QString strType;
if (type == 0) {
strType = "发送";
ui->txtMain->setTextColor(QColor("darkgreen"));
} else {
ui->txtMain->setTextColor(QColor("#22A3A9"));
} else if (type == 1) {
strType = "接收";
ui->txtMain->setTextColor(QColor("red"));
ui->txtMain->setTextColor(QColor("#D64D54"));
} else {
strType = "信息";
ui->txtMain->setTextColor(QColor("#A279C5"));
}
strData = QString("时间[%1] %2: %3").arg(TIMEMS).arg(strType).arg(strData);
@ -159,14 +162,20 @@ void frmTcpClient::connected()
isOk = true;
ui->btnConnect->setText("断开");
append(0, "服务器连接");
append(2, QString("本地地址: %1 本地端口: %2").arg(socket->localAddress().toString()).arg(socket->localPort()));
append(2, QString("远程地址: %1 远程端口: %2").arg(socket->peerAddress().toString()).arg(socket->peerPort()));
}
void frmTcpClient::disconnected()
{
isOk = false;
socket->abort();
//socket->abort();
ui->btnConnect->setText("连接");
append(1, "服务器断开");
//打印下可能的错误信息
if (socket->error() != QTcpSocket::UnknownSocketError) {
append(2, socket->errorString());
}
}
void frmTcpClient::readData()
@ -218,10 +227,13 @@ void frmTcpClient::on_btnConnect_clicked()
{
if (ui->btnConnect->text() == "连接") {
//断开所有连接和操作
socket->abort();
socket->abort();
//绑定网卡和端口
//有个后遗症,关闭连接或者关闭程序后还会保持几分钟导致不能重复绑定
//提示 The bound address is already in use
//参考 https://www.cnblogs.com/baiduboy/p/7426822.html
#if (QT_VERSION >= QT_VERSION_CHECK(5,0,0))
socket->bind(QHostAddress(AppConfig::TcpBindIP), AppConfig::TcpBindPort);
//socket->bind(QHostAddress(AppConfig::TcpBindIP), AppConfig::TcpBindPort);
#endif
//连接服务器
socket->connectToHost(AppConfig::TcpServerIP, AppConfig::TcpServerPort);

View File

@ -7,6 +7,7 @@ frmTcpServer::frmTcpServer(QWidget *parent) : QWidget(parent), ui(new Ui::frmTcp
ui->setupUi(this);
this->initForm();
this->initConfig();
on_btnListen_clicked();
}
frmTcpServer::~frmTcpServer()
@ -129,10 +130,13 @@ void frmTcpServer::append(int type, const QString &data, bool clear)
QString strType;
if (type == 0) {
strType = "发送";
ui->txtMain->setTextColor(QColor("darkgreen"));
} else {
ui->txtMain->setTextColor(QColor("#22A3A9"));
} else if (type == 1) {
strType = "接收";
ui->txtMain->setTextColor(QColor("red"));
ui->txtMain->setTextColor(QColor("#D64D54"));
} else {
strType = "信息";
ui->txtMain->setTextColor(QColor("#A279C5"));
}
strData = QString("时间[%1] %2: %3").arg(TIMEMS).arg(strType).arg(strData);

View File

@ -128,10 +128,13 @@ void frmUdpClient::append(int type, const QString &data, bool clear)
QString strType;
if (type == 0) {
strType = "发送";
ui->txtMain->setTextColor(QColor("darkgreen"));
} else {
ui->txtMain->setTextColor(QColor("#22A3A9"));
} else if (type == 1) {
strType = "接收";
ui->txtMain->setTextColor(QColor("red"));
ui->txtMain->setTextColor(QColor("#D64D54"));
} else {
strType = "信息";
ui->txtMain->setTextColor(QColor("#A279C5"));
}
strData = QString("时间[%1] %2: %3").arg(TIMEMS).arg(strType).arg(strData);
@ -190,7 +193,8 @@ 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);

View File

@ -7,6 +7,7 @@ frmUdpServer::frmUdpServer(QWidget *parent) : QWidget(parent), ui(new Ui::frmUdp
ui->setupUi(this);
this->initForm();
this->initConfig();
on_btnListen_clicked();
}
frmUdpServer::~frmUdpServer()
@ -124,10 +125,13 @@ void frmUdpServer::append(int type, const QString &data, bool clear)
QString strType;
if (type == 0) {
strType = "发送";
ui->txtMain->setTextColor(QColor("darkgreen"));
} else {
ui->txtMain->setTextColor(QColor("#22A3A9"));
} else if (type == 1) {
strType = "接收";
ui->txtMain->setTextColor(QColor("red"));
ui->txtMain->setTextColor(QColor("#D64D54"));
} else {
strType = "信息";
ui->txtMain->setTextColor(QColor("#A279C5"));
}
strData = QString("时间[%1] %2: %3").arg(TIMEMS).arg(strType).arg(strData);

View File

@ -130,10 +130,13 @@ void frmWebClient::append(int type, const QString &data, bool clear)
QString strType;
if (type == 0) {
strType = "发送";
ui->txtMain->setTextColor(QColor("darkgreen"));
} else {
ui->txtMain->setTextColor(QColor("#22A3A9"));
} else if (type == 1) {
strType = "接收";
ui->txtMain->setTextColor(QColor("red"));
ui->txtMain->setTextColor(QColor("#D64D54"));
} else {
strType = "信息";
ui->txtMain->setTextColor(QColor("#A279C5"));
}
strData = QString("时间[%1] %2: %3").arg(TIMEMS).arg(strType).arg(strData);
@ -146,14 +149,20 @@ void frmWebClient::connected()
isOk = true;
ui->btnConnect->setText("断开");
append(0, "服务器连接");
append(2, QString("本地地址: %1 本地端口: %2").arg(socket->localAddress().toString()).arg(socket->localPort()));
append(2, QString("远程地址: %1 远程端口: %2").arg(socket->peerAddress().toString()).arg(socket->peerPort()));
}
void frmWebClient::disconnected()
{
isOk = false;
socket->abort();
//socket->abort();
ui->btnConnect->setText("连接");
append(1, "服务器断开");
//打印下可能的错误信息
if (socket->error() != QTcpSocket::UnknownSocketError) {
append(2, socket->errorString());
}
}
void frmWebClient::sendData(const QString &data)

View File

@ -7,6 +7,7 @@ frmWebServer::frmWebServer(QWidget *parent) : QWidget(parent), ui(new Ui::frmWeb
ui->setupUi(this);
this->initForm();
this->initConfig();
on_btnListen_clicked();
}
frmWebServer::~frmWebServer()
@ -129,10 +130,13 @@ void frmWebServer::append(int type, const QString &data, bool clear)
QString strType;
if (type == 0) {
strType = "发送";
ui->txtMain->setTextColor(QColor("darkgreen"));
} else {
ui->txtMain->setTextColor(QColor("#22A3A9"));
} else if (type == 1) {
strType = "接收";
ui->txtMain->setTextColor(QColor("red"));
ui->txtMain->setTextColor(QColor("#D64D54"));
} else {
strType = "信息";
ui->txtMain->setTextColor(QColor("#A279C5"));
}
strData = QString("时间[%1] %2: %3").arg(TIMEMS).arg(strType).arg(strData);