libtcp更新

master
bob.pan 4 years ago
parent 7ddfd1b048
commit 18fd459204

@ -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;

@ -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<std::mutex> 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_)
{

@ -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<TP_PROTOCOL_MESSAGE>);
void signal_bin_data_send_completed(QSharedPointer<TP_PROTOCOL_MESSAGE>);

@ -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<bool, tcpClientRecv*>(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<QString, ClientDataRecvPair>::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:"<<nport;
setRevSocketisBusy(strUuid, true);
pClient->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<TP_PROTOCOL_MESSAGE> 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);
}
}

@ -28,12 +28,9 @@ tpClientSession::tpClientSession(int ID, const QSslCertificate& ssl_cert, const
dynamic_cast <QSslSocket*>(psocket_)->setLocalCertificate(ssl_cert_);
dynamic_cast <QSslSocket*>(psocket_)->setPrivateKey(ssl_key_);
dynamic_cast <QSslSocket*>(psocket_)->setProtocol(ssl_protocol_);
connect(psocket_, SIGNAL(readyRead()), this, SLOT(on_ready_read()));
connect(psocket_, SIGNAL(disconnected()), this, SLOT(on_disconnect()));
dynamic_cast <QSslSocket*>(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<TP_PROTOCOL_MESSAGE> msg_ptr = QSharedPointer<TP_PROTOCOL_MESSAGE>(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<QByteArray> dat
void tpClientSession::socket_close()
{
if (psocket_->isOpen())
{
psocket_->abort();
psocket_->close();
}
}

@ -23,21 +23,13 @@ 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;
}
}
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<TP_PROTOCOL_MESSAGE>)), this, SLOT(on_data_send_completed(QSharedPointer<TP_PROTOCOL_MESSAGE>)));
@ -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<bool, tcpClientRecv*>(false, data_sess_ptr);
@ -329,10 +321,10 @@ void TPTcpServer::on_msg_received(int sessID, QSharedPointer<TP_PROTOCOL_MESSAGE
if (pClient)
{
QString strUuid = pClient->getUuid();
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<TP_PROTOCOL_MESSAGE> 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);
}
}
}

@ -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"

@ -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();

Loading…
Cancel
Save