|
|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
#pragma execution_character_set("utf-8")
|
|
|
|
|
#include "netControl.h"
|
|
|
|
|
#include "commonDefine.h"
|
|
|
|
|
#include <QMetaEnum>
|
|
|
|
|
|
|
|
|
|
NetControl::NetControl(const QString& configPath, bool bAutoReconnect /* = false */, QObject *parent /* = 0 */)
|
|
|
|
|
: QObject(parent),
|
|
|
|
|
@ -87,21 +88,22 @@ void NetControl::connectNet(QString severIp, int serverPort)
|
|
|
|
|
|
|
|
|
|
void NetControl::onErrorHandler(QAbstractSocket::SocketError err)
|
|
|
|
|
{
|
|
|
|
|
QMetaEnum metaEnum = QMetaEnum::fromType<QAbstractSocket::SocketError>();
|
|
|
|
|
switch (err)
|
|
|
|
|
{
|
|
|
|
|
case QAbstractSocket::AddressInUseError:
|
|
|
|
|
qCritical() << __FUNCTION__ << endl
|
|
|
|
|
qCritical() << __FUNCTION__ <<": "<< metaEnum.key(err) << endl
|
|
|
|
|
<< "SOCKET ERROR: Address is already in use";
|
|
|
|
|
break;
|
|
|
|
|
case QAbstractSocket::ConnectionRefusedError:
|
|
|
|
|
qWarning() << __FUNCTION__ << endl
|
|
|
|
|
qWarning() << __FUNCTION__ << ": " << metaEnum.key(err) << endl
|
|
|
|
|
<< "SOCKET ERROR: Connection refused";
|
|
|
|
|
m_pTcpSocket->abort();
|
|
|
|
|
m_pTcpSocket->close();
|
|
|
|
|
|
|
|
|
|
if (m_bAutoReconnect)
|
|
|
|
|
{
|
|
|
|
|
qDebug() << __FUNCTION__ << endl
|
|
|
|
|
qDebug() << __FUNCTION__ << ": " << metaEnum.key(err) << endl
|
|
|
|
|
<< "Reconnecting ...";
|
|
|
|
|
QThread::sleep(1);
|
|
|
|
|
m_pTcpSocket->connectToHost(m_szHostIp, m_port);
|
|
|
|
|
@ -109,16 +111,29 @@ void NetControl::onErrorHandler(QAbstractSocket::SocketError err)
|
|
|
|
|
break;
|
|
|
|
|
case QAbstractSocket::HostNotFoundError:
|
|
|
|
|
{
|
|
|
|
|
qCritical() << __FUNCTION__ << endl
|
|
|
|
|
qCritical() << __FUNCTION__ << ": " << metaEnum.key(err) << endl
|
|
|
|
|
<< "SOCKET ERROR: Host not found";
|
|
|
|
|
qDebug() << "连接失败,未找到对应地址";
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case QAbstractSocket::RemoteHostClosedError:
|
|
|
|
|
qCritical() << __FUNCTION__ << endl
|
|
|
|
|
qCritical() << __FUNCTION__ << ": " << metaEnum.key(err) << endl
|
|
|
|
|
<< "SOCKET ERROR: Remote host closed";
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
{
|
|
|
|
|
// 网络波动可能导致断开链接后的重连失败,报错NetworkError
|
|
|
|
|
qCritical() << __FUNCTION__ << ": " << metaEnum.key(err) << endl;
|
|
|
|
|
if (!m_pTcpSocket->isOpen() && m_bAutoReconnect)
|
|
|
|
|
{
|
|
|
|
|
qDebug() << __FUNCTION__ << ": Start to reconnect ...";
|
|
|
|
|
QThread::sleep(1);
|
|
|
|
|
m_pTcpSocket->connectToHost(m_szHostIp, m_port);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void NetControl::onConnected()
|
|
|
|
|
|