Доброго дня,
написал тут два простеньких тестовых консольных приложения , которые обмениваются пакетами через локалхост, для тестирования сигнала readyRead() - и дело в том, что сигнал не отлавливается!
writer - это клиент
reader - это сервер
writer -> main.cpp
...
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QTcpSocket *client = new QTcpSocket();
for (;;) {
client->connectToHost(QHostAddress::LocalHost, 502);
if (client->waitForConnected(5000)) {
qDebug("Connected!");
break;
}
else {
qDebug() << "Retry connect" << QTime::currentTime();;
}
}
QByteArray ba;
qint64 bw = 0;
while (1) {
cout << "Please enter count bytes for wtitten : ";
bw = 0;
cin >> bw;
qDebug() << "Starting writting " << bw << " bytes in time : " << QTime::currentTime();
ba.clear();
ba.resize(bw);
for (int i=0;i<bw;i++) { //filling data array
ba[i] = i;
}
bw = client->write(ba);
qDebug() << "Writed is : " << bw << " bytes";
cout << "Tx : ";
printDataToHex(ba);
}
return app.exec();
}
...
reader -> sreader.h
...
class Reader : public QTcpServer
{
Q_OBJECT
public:
Reader(QObject *parent = 0) : QTcpServer(parent) {
//setMaxPendingConnections(2);
if (!listen(QHostAddress::LocalHost, 502)) {
qDebug() << "Unable to start the server: " << errorString();
return;
}
connect(this, SIGNAL(newConnection()), this, SLOT(slotAccept()));
}
~Reader() {
}
private slots:
void slotMsg() { qDebug() << "ReadyRead"; }
void slotAccept() {
socket = nextPendingConnection();
qDebug() << "New connection sd : " << socket->socketDescriptor();
connect(socket, SIGNAL(readyRead()), this, SLOT(slotMsg()));
}
private:
QTcpSocket *socket;
};
...
Приложение reader отлавливает сам факт подключения клиента writer, но когда я из приложения writer шлю для reader данные - то reader никак не реагирует
Прикрепил архивы с исходниками. Помогите люди добрые!