-
Notifications
You must be signed in to change notification settings - Fork 0
/
TcpClient.cpp
88 lines (70 loc) · 1.96 KB
/
TcpClient.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include "TcpClient.h"
#include <iostream>
#include "data/config.h"
TcpClient::TcpClient()
{
connect(&socket, SIGNAL(connected()), SLOT(onSocketConnected()));
connect(&socket, SIGNAL(readyRead()), SLOT(onReadyRead()));
connect(&socket, SIGNAL(disconnected()), SLOT(onSocketDisconnected()));
connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), SLOT(onSocketError(QAbstractSocket::SocketError)));
connect(&flush_timer, SIGNAL(timeout()),SLOT(onFlushTimerTick()));
flush_timer.setInterval(1000);
flush_timer.start();
}
bool TcpClient::isConnected()
{
return socket.state() == QAbstractSocket::ConnectedState;
}
void TcpClient::connectToServer()
{
if (socket.state() == QAbstractSocket::UnconnectedState)
{
socket.connectToHost(HOST_ADDRESS, HOST_PORT);
}
}
void TcpClient::sendMessage(Message msg)
{
QString msgToSend = msg.toString() + QString(DELIMITER);
if (socket.state() != QAbstractSocket::ConnectedState)
{
emit report("Client ERR: Cannot send; Not connected\n");
return;
}
// qDebug() << "Client sending message: " << msgToSend;
// emit report("Client Sending Message: " + msgToSend);
QByteArray data = msgToSend.toLatin1();
socket.write(data);
}
void TcpClient::disconnectFromServer()
{
qDebug() << "state: " << socket.state();
if (socket.state() != QAbstractSocket::ConnectedState)
{
emit report("Client ERR: No connection to close.\n");
return;
}
qDebug() << "Client disconnecting";
socket.disconnectFromHost();
}
void TcpClient::onSocketConnected()
{
emit connected();
onReadyRead();
}
void TcpClient::onSocketDisconnected()
{
emit report("Connection Closed.\n");
emit disconnected();
}
void TcpClient::onReadyRead()
{
emit receivedData(socket.readAll());
}
void TcpClient::onSocketError(QAbstractSocket::SocketError err)
{
emit error(err);
}
void TcpClient::onFlushTimerTick()
{
std::flush(std::cout);
}