From 18fd459204e5d2f7733aa62226ba43fafa1afe66 Mon Sep 17 00:00:00 2001 From: "bob.pan" Date: Sun, 19 Dec 2021 15:03:35 +0800 Subject: [PATCH] =?UTF-8?q?libtcp=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libtcp/common/tcpClientRecv.cpp | 3 +- src/libtcp/common/tcpServerSend.cpp | 9 ++---- src/libtcp/common/tcpServerSend.h | 1 + src/libtcp/libClient/tpTcpClient.cpp | 19 ++++++------ src/libtcp/libServer/tpClientSession.cpp | 22 ++++---------- src/libtcp/libServer/tpTcpServer.cpp | 37 +++++++++--------------- tpvs17/tpMain/lpMainWin.cpp | 4 +-- tpvs17/valueMainUI/valueMainUI.cpp | 2 +- 8 files changed, 36 insertions(+), 61 deletions(-) diff --git a/src/libtcp/common/tcpClientRecv.cpp b/src/libtcp/common/tcpClientRecv.cpp index c3b7061..f12d960 100644 --- a/src/libtcp/common/tcpClientRecv.cpp +++ b/src/libtcp/common/tcpClientRecv.cpp @@ -110,11 +110,12 @@ void tcpClientRecv::on_ready_read() { if (current_recv_size_ >= should_recv_size_) return; - char* dataPtr = pDataRecv_ + current_recv_size_; if ((current_recv_size_ + size) > should_recv_size_) { size = should_recv_size_ - current_recv_size_; } + + char* dataPtr = pDataRecv_ + current_recv_size_; if (dataPtr != nullptr) { current_recv_size_ += size; diff --git a/src/libtcp/common/tcpServerSend.cpp b/src/libtcp/common/tcpServerSend.cpp index f6005e5..5f9e309 100644 --- a/src/libtcp/common/tcpServerSend.cpp +++ b/src/libtcp/common/tcpServerSend.cpp @@ -12,6 +12,7 @@ tcpServerSend::tcpServerSend(qint64 sessID, QObject *parent) connect(server_listener_ptr_, SIGNAL(newConnection()), this, SLOT(on_new_connection())); connect(listen_timeout_timer_, SIGNAL(timeout()), this, SLOT(on_listen_timeout())); connect(trans_timeout_timer_, SIGNAL(timeout()), this, SLOT(on_transfer_timeout())); + connect(this, SIGNAL(signal_session_start(qint64, quint16, bool)), this, SLOT(on_session_start(qint64, quint16, bool))); } tcpServerSend::~tcpServerSend() @@ -43,6 +44,7 @@ tcpServerSend::~tcpServerSend() void tcpServerSend::set_msg_body(const QJsonObject& msgbody) { + std::lock_guard guard(m); msg_body_ = msgbody; } @@ -155,7 +157,6 @@ void tcpServerSend::on_socket_error(QAbstractSocket::SocketError err) qCritical() << __FUNCTION__ << endl << err_str; } - close(); } @@ -173,14 +174,8 @@ void tcpServerSend::begin(const QHostAddress& address, quint16 nPort, bool is_se msg_ptr_->body = msg_body_; msg_ptr_->body["server_port"] = nPort; msg_ptr_->body["client_name"] = client_name_; - //if (is_send) { - msg_ptr_->body["request_data_sending"] = 1; msg_ptr_->body["data_size"] = bin_data_size_to_send_; - //} - //else { - // msg_ptr_->body["accept_data_sending"] = 1; - //} emit signal_listen_successful(msg_ptr_); if (listen_timeout_timer_) { diff --git a/src/libtcp/common/tcpServerSend.h b/src/libtcp/common/tcpServerSend.h index 3033d4d..ba6b0a1 100644 --- a/src/libtcp/common/tcpServerSend.h +++ b/src/libtcp/common/tcpServerSend.h @@ -28,6 +28,7 @@ public: void setClientName(const QString& strCli) { client_name_ = strCli; } void set_bin_data_to_send(const QByteArray& data); signals: + void signal_session_start(qint64 sess_id, quint16 nPort, bool is_send); void signal_data_sess_closed(qint64); void signal_listen_successful(QSharedPointer); void signal_bin_data_send_completed(QSharedPointer); diff --git a/src/libtcp/libClient/tpTcpClient.cpp b/src/libtcp/libClient/tpTcpClient.cpp index c1636e9..0bec66d 100644 --- a/src/libtcp/libClient/tpTcpClient.cpp +++ b/src/libtcp/libClient/tpTcpClient.cpp @@ -116,7 +116,7 @@ void TPTcpClient::createChildRevSocket(int socketNum) connect(thread_ptr, &QThread::finished, data_sess_ptr, &QObject::deleteLater); connect(data_sess_ptr, &tcpClientRecv::signal_data_recv_completed, this, &TPTcpClient::on_data_recv_completed, Qt::QueuedConnection); - connect(this, &TPTcpClient::signal_session_start, data_sess_ptr, &tcpClientRecv::on_session_start, Qt::QueuedConnection); + //connect(this, &TPTcpClient::signal_session_start, data_sess_ptr, &tcpClientRecv::on_session_start, Qt::QueuedConnection); connect(data_sess_ptr, &tcpClientRecv::sgException, this, &TPTcpClient::on_data_recv_close, Qt::QueuedConnection); data_sessions_[strUuid] = thread_ptr; m_childRevSocket_Map[strUuid] = QPair(false, data_sess_ptr); @@ -150,7 +150,7 @@ void TPTcpClient::createServerSession(int sessNum) for (int nIndex = 1; nIndex <= sessNum; nIndex++) { tcpServerSend *data_sess_ptr = new tcpServerSend(nIndex); //打开服务 开始监听端口 - connect(this, &TPTcpClient::signal_data_session_start, data_sess_ptr, &tcpServerSend::on_session_start); + //connect(this, &TPTcpClient::signal_data_session_start, data_sess_ptr, &tcpServerSend::on_session_start); //服务打开成功,反馈打开的端口,向接收者发送信息,让其连接来接收文件 connect(data_sess_ptr, &tcpServerSend::signal_listen_successful, this, &TPTcpClient::on_listen_successful); //服务关闭反馈 释放服务资源 @@ -254,7 +254,7 @@ void TPTcpClient::on_auto_connect() } if ((auto_reconnect_) && (ssl_socket_ptr_->state() != QAbstractSocket::SocketState::ConnectedState)) { - //qDebug() << "Reconnect..." << __FUNCTION__; + qDebug() << "Reconnect..." << __FUNCTION__; ssl_socket_ptr_->abort(); ssl_socket_ptr_->close(); ssl_socket_ptr_->connectToHost(host_ip_, port_); @@ -266,7 +266,7 @@ void TPTcpClient::on_auto_connect() } if ((auto_reconnect_) && (socket_ptr_->state() != QAbstractSocket::SocketState::ConnectedState)) { - // qDebug() << "Reconnect..." << __FUNCTION__; + qDebug() << "Reconnect..." << __FUNCTION__; socket_ptr_->abort(); socket_ptr_->close(); socket_ptr_->connectToHost(host_ip_, port_); @@ -294,7 +294,6 @@ void TPTcpClient::on_disconnected() { //qDebug() << "TPTcpClient::on_disconnected" << __FUNCTION__; heartbeat_timer_->stop(); - for (QMap::iterator it = m_childRevSocket_Map.begin(); it != m_childRevSocket_Map.end(); ++it) { (*it).first = false; @@ -328,11 +327,11 @@ void TPTcpClient::on_msg_received() if (pClient) { QString strUuid = pClient->getUuid(); - //qDebug() << "curUUId:" << strUuid<<" port:"<set_msg_body(msg_ptr->body); emit pClient->sgStartSession(strUuid, host_ip_, nport); //emit signal_session_start(strUuid, host_ip_, nport); - setRevSocketisBusy(strUuid, true); + } } else @@ -419,12 +418,12 @@ void TPTcpClient::on_send_binary_data(QSharedPointer msg,QS if (data_sess_ptr) { int sessID = data_sess_ptr->getSessionID(); - qDebug() << "curUse ID:" << sessID; + setSendSessionisBusy(sessID, true); data_sess_ptr->setClientName("111"); data_sess_ptr->set_msg_body(msg->body); data_sess_ptr->set_bin_data_to_send(*data_ptr); - emit signal_data_session_start(sessID, data_port_, true); - setSendSessionisBusy(sessID, true); + emit data_sess_ptr->signal_session_start(sessID, data_port_, true); + //emit signal_data_session_start(sessID, data_port_, true); } } diff --git a/src/libtcp/libServer/tpClientSession.cpp b/src/libtcp/libServer/tpClientSession.cpp index 9070e6e..e446b0d 100644 --- a/src/libtcp/libServer/tpClientSession.cpp +++ b/src/libtcp/libServer/tpClientSession.cpp @@ -28,12 +28,9 @@ tpClientSession::tpClientSession(int ID, const QSslCertificate& ssl_cert, const dynamic_cast (psocket_)->setLocalCertificate(ssl_cert_); dynamic_cast (psocket_)->setPrivateKey(ssl_key_); dynamic_cast (psocket_)->setProtocol(ssl_protocol_); - connect(psocket_, SIGNAL(readyRead()), this, SLOT(on_ready_read())); connect(psocket_, SIGNAL(disconnected()), this, SLOT(on_disconnect())); - dynamic_cast (psocket_)->startServerEncryption(); - // qDebug() << socket_descriptor_ << " client connected"; } tpClientSession::~tpClientSession() @@ -50,15 +47,12 @@ void tpClientSession::on_ready_read() { QByteArray data_recv; data_recv = psocket_->readAll(); - decoder_.parser(data_recv); QSharedPointer msg_ptr = QSharedPointer(new TP_PROTOCOL_MESSAGE); while (!decoder_.empty()) { msg_ptr = decoder_.front(); - emit signal_msg_received(socket_descriptor_, msg_ptr); - decoder_.pop(); } } @@ -70,11 +64,7 @@ void tpClientSession::force_close() void tpClientSession::on_disconnect() { - // qDebug() << __FUNCTION__ << endl - // << socket_descriptor_ << " Disconnected"; - emit signal_disconnected(socket_descriptor_); - socket_close(); } @@ -86,12 +76,10 @@ void tpClientSession::on_sendPackage(int sess_id, QSharedPointer dat void tpClientSession::socket_close() { - - if (psocket_->isOpen()) - { - psocket_->abort(); - psocket_->close(); - } - + if (psocket_->isOpen()) + { + psocket_->abort(); + psocket_->close(); + } } diff --git a/src/libtcp/libServer/tpTcpServer.cpp b/src/libtcp/libServer/tpTcpServer.cpp index 170bae2..175af9e 100644 --- a/src/libtcp/libServer/tpTcpServer.cpp +++ b/src/libtcp/libServer/tpTcpServer.cpp @@ -23,20 +23,12 @@ TPTcpServer::~TPTcpServer() bool TPTcpServer::server_begin(const QHostAddress& address, quint16 nPort) { - //qDebug() << __FUNCTION__; if (!this->listen(address, nPort)) { - qWarning() << __FUNCTION__ << endl - << "Could not start server. Error: " << this->errorString(); + qWarning() << __FUNCTION__ << endl << "Could not start server. Error: " << this->errorString(); return false; } - else - { - //qDebug() << __FUNCTION__ << endl - // << "Server started. Listening to port " << nPort; - - return true; - } + return true; } void TPTcpServer::server_end() @@ -151,7 +143,7 @@ void TPTcpServer::createServerSendSockets(int sessNum) { for (int nIndex = 1; nIndex <= sessNum; nIndex++) { tcpServerSend *data_sess_ptr = new tcpServerSend(nIndex); - connect(this, &TPTcpServer::signal_data_session_start, data_sess_ptr, &tcpServerSend::on_session_start); + //connect(this, &TPTcpServer::signal_data_session_start, data_sess_ptr, &tcpServerSend::on_session_start); connect(data_sess_ptr, &tcpServerSend::signal_listen_successful, this, &TPTcpServer::on_listen_successful); connect(data_sess_ptr, SIGNAL(signal_data_sess_closed(qint64)), this, SLOT(on_data_session_closed(qint64))); connect(data_sess_ptr, SIGNAL(signal_bin_data_send_completed(QSharedPointer)), this, SLOT(on_data_send_completed(QSharedPointer))); @@ -204,7 +196,7 @@ void TPTcpServer::createClientRecvSocket(int socketNum) connect(thread_ptr, &QThread::finished, data_sess_ptr, &QObject::deleteLater); connect(data_sess_ptr, &tcpClientRecv::signal_data_recv_completed, this, &TPTcpServer::on_data_recv_completed_client); - connect(this, &TPTcpServer::signal_session_start, data_sess_ptr, &tcpClientRecv::on_session_start); + //connect(this, &TPTcpServer::signal_session_start, data_sess_ptr, &tcpClientRecv::on_session_start); connect(data_sess_ptr, &tcpClientRecv::sgException, this, &TPTcpServer::on_data_recv_close); data_sessions_[strUuid] = thread_ptr; m_childRevSocket_Map[strUuid] = QPair(false, data_sess_ptr); @@ -329,10 +321,10 @@ void TPTcpServer::on_msg_received(int sessID, QSharedPointergetUuid(); - qDebug() << "curUUId:" << strUuid << " port:" << nport; - pClient->set_msg_body(msg_ptr->body); - emit signal_session_start(strUuid, strCliIP, nport); setRevSocketisBusy(strUuid, true); + pClient->set_msg_body(msg_ptr->body); + emit pClient->sgStartSession(strUuid, strCliIP, nport); + //emit signal_session_start(); } return; } @@ -482,9 +474,8 @@ void TPTcpServer::on_data_session_closed(qint64 sessID) void TPTcpServer::on_listen_successful(QSharedPointer msg_ptr) { QString client_name = msg_ptr->body["client_name"].toString(); - if (client_name.isEmpty()) return; - - //data_port_ = msg_ptr->body["server_port"].toInt(); + if (client_name.isEmpty()) + return; send_package(client_name, *msg_ptr); } @@ -504,12 +495,12 @@ void TPTcpServer::send_binary_data(const QString& strClient, TP_PROTOCOL_MESSAGE if (data_sess_ptr) { int sessID = data_sess_ptr->getSessionID(); - //qDebug() << "curUse ID:" << sessID; + setSendSessionisBusy(sessID, true); data_sess_ptr->setClientName(it->client_name_); data_sess_ptr->set_msg_body(msg.body); data_sess_ptr->set_bin_data_to_send(binaryData); - emit signal_data_session_start(sessID, data_port_, true); - setSendSessionisBusy(sessID, true); + emit data_sess_ptr->signal_session_start(sessID, data_port_, true); + //emit signal_data_session_start(sessID, data_port_, true); } } } @@ -521,11 +512,11 @@ void TPTcpServer::send_binary_data(const QString& strClient, TP_PROTOCOL_MESSAGE if (data_sess_ptr) { int sessID = data_sess_ptr->getSessionID(); + setSendSessionisBusy(sessID, true); data_sess_ptr->setClientName(strClient); data_sess_ptr->set_msg_body(msg.body); data_sess_ptr->set_bin_data_to_send(binaryData); - emit signal_data_session_start(sessID, data_port_, true); - setSendSessionisBusy(sessID, true); + emit data_sess_ptr->signal_session_start(sessID, data_port_, true); } } } diff --git a/tpvs17/tpMain/lpMainWin.cpp b/tpvs17/tpMain/lpMainWin.cpp index b4aedf8..f4b9625 100644 --- a/tpvs17/tpMain/lpMainWin.cpp +++ b/tpvs17/tpMain/lpMainWin.cpp @@ -22,9 +22,9 @@ #include "databasesql.h" #include "lpCryptokey.h" -#define VERSION_HUB "3.0.4.0" +#define VERSION_HUB "3.0.5.0" #define VERSION_ALG "3.0.1.4" -#define UPDATE_TIME "2021-12-15" +#define UPDATE_TIME "2021-12-19" #pragma execution_character_set("utf-8") #define MODEL_UI_ICON_NONE ":/image/no-img" diff --git a/tpvs17/valueMainUI/valueMainUI.cpp b/tpvs17/valueMainUI/valueMainUI.cpp index 63f3f21..1d0a89f 100644 --- a/tpvs17/valueMainUI/valueMainUI.cpp +++ b/tpvs17/valueMainUI/valueMainUI.cpp @@ -29,7 +29,7 @@ valueMainUI::valueMainUI(QWidget *parent) setupTrayIcon();//后台任务栏初始化 setWindowIcon(QIcon(WINDOWICON)); - setWindowTitle(tr("识别定位一体检测系统(v1.3.0 21.12.15)")); + setWindowTitle(tr("识别定位一体检测系统(v1.4.0 21.12.19)")); lpGlobalData::instance(); lpConfig::instance()->loadConfig();