/** ---------------------------------------------------------------------------
* @brief socket_client::socket_client Constructor
*/
socket_client::socket_client(void)
{
socket_connected = false;
disconnect(tcp_socket ,0 ,0 ,0);
connect(&my_heartbeat_timer, SIGNAL(timeout()), this, SLOT(slot_heartbeat_timer()));
change_state = true;
my_port = 0;
}
/** ---------------------------------------------------------------------------
* @brief socket_client::~socket_client Destructor
*/
socket_client::~socket_client(void)
{
if (queue_array != NULL) delete queue_array;
if (tcp_socket != NULL) tcp_socket->deleteLater();
}
/** ---------------------------------------------------------------------------
* @brief socket_client::socket_client Constructor
*/
socket_client::socket_client(void)
{
queue_array = new (QByteArray);
socket_connected = false;
tcp_socket = new QTcpSocket(this);
disconnect(tcp_socket ,0 ,0 ,0);
connect(&my_heartbeat_timer, SIGNAL(timeout()), this, SLOT(slot_heartbeat_timer()));
change_state = true;
my_port = 0;
}
/** ---------------------------------------------------------------------------
* @brief socket_client::~socket_client Destructor
*/
socket_client::~socket_client(void)
{
if (queue_array != NULL) delete queue_array;
if (tcp_socket != NULL) tcp_socket->deleteLater();
}
To copy to clipboard, switch view to plain text mode
/** ---------------------------------------------------------------------------
* @brief socket_client::connect_to_server
* @param ip_address
* @param port
*/
BOOL socket_client::connect_to_server(const char * ip_address,
const UINT_32 & port)
{
change_state = socket_connected;
my_ip_address = ip_address;
my_port = port;
my_heartbeat_timer.stop();
//socket_connected = false;
tcp_socket->connectToHost(my_ip_address, my_port);
if(tcp_socket->waitForConnected(200))
{
socket_connected = true;
// Disconnect all slots
tcp_socket->disconnect();
disconnect(tcp_socket ,0 ,0 ,0);
emit signal_connected(true);
// re-connect signals and slots.
connect(tcp_socket,SIGNAL(readyRead()),this,SLOT(read_data()));
connect(tcp_socket,SIGNAL(disconnected()),this,SLOT(slot_retry_server_connect()));
if (change_state != socket_connected )
{
change_state = socket_connected;
gprintf ("\n> Connected to SocServer %s:%d ",
my_ip_address.toLatin1().data(),
my_port);
}
return true;
}
else
{
socket_connected = false;
if (change_state != socket_connected )
{
// only print error.e message once
change_state = socket_connected;
gprintf ("\n SocServer connect FAILED [%s] Issue reconnect to %s:%d ",
tcp_socket->errorString().toLatin1().data(),
my_ip_address.toLatin1().data(),
my_port);
}
emit signal_connected(false);
disconnect(tcp_socket ,0 ,0 ,0);
tcp_socket->disconnect();
tcp_socket->close();
QTimer::singleShot(5000,
this,
SLOT(slot_retry_server_connect
()));
}
return false;
}
/** ---------------------------------------------------------------------------
* @brief socket_client::connect_to_server
* @param ip_address
* @param port
*/
BOOL socket_client::connect_to_server(const char * ip_address,
const UINT_32 & port)
{
change_state = socket_connected;
my_ip_address = ip_address;
my_port = port;
my_heartbeat_timer.stop();
//socket_connected = false;
tcp_socket->connectToHost(my_ip_address, my_port);
if(tcp_socket->waitForConnected(200))
{
socket_connected = true;
// Disconnect all slots
tcp_socket->disconnect();
disconnect(tcp_socket ,0 ,0 ,0);
emit signal_connected(true);
// re-connect signals and slots.
connect(tcp_socket,SIGNAL(readyRead()),this,SLOT(read_data()));
connect(tcp_socket,SIGNAL(disconnected()),this,SLOT(slot_retry_server_connect()));
if (change_state != socket_connected )
{
change_state = socket_connected;
gprintf ("\n> Connected to SocServer %s:%d ",
my_ip_address.toLatin1().data(),
my_port);
}
return true;
}
else
{
socket_connected = false;
if (change_state != socket_connected )
{
// only print error.e message once
change_state = socket_connected;
gprintf ("\n SocServer connect FAILED [%s] Issue reconnect to %s:%d ",
tcp_socket->errorString().toLatin1().data(),
my_ip_address.toLatin1().data(),
my_port);
}
emit signal_connected(false);
disconnect(tcp_socket ,0 ,0 ,0);
tcp_socket->disconnect();
tcp_socket->close();
QTimer::singleShot(5000, this, SLOT(slot_retry_server_connect()));
}
return false;
}
To copy to clipboard, switch view to plain text mode
Attached valgrind 'report'
Bookmarks