Привет всем. Я че-то затупил вокруг простейшей проги, хотя раньше все получалось, правда, под виндой.
Простецкое клиентское приложение, получает в параметры ip и порт, коннектится, отсылает "Подключено" и ждет сообщений от сервера.
Вот, собственно, код:
reciever.cpp
C++ (Qt)
#include "reciever.h"
reciever::reciever(QObject *parent, QString address, QString _port):
QObject(parent), ip(address), port(_port.toInt())
{
connect(&socket, SIGNAL(readyRead()), this, SLOT(readTCP()));
connect(&socket, SIGNAL(disconnected()), this, SLOT(_disconneted()));
}
void reciever::readTCP()
{
QDataStream in(&socket);
in.setVersion(QDataStream::Qt_4_7);
in >> data;
qDebug() << data.toAscii();
}
void reciever::_disconneted()
{
qDebug("Отключено");
connecting();
}
void reciever::connecting()
{
qDebug() << "Подключение...";
while(!socket.waitForConnected(1000))
socket.connectToHost(ip, port);
QDataStream out(&socket);
out << QString("Подключено");
qDebug() << "\n" << "Подключено к " << ip.toAscii();
qDebug() << "Ожидается прием сообщений:";
}
reciever.h
C++ (Qt)
#ifndef RECIEVER_H
#define RECIEVER_H
#include <QObject>
#include <QTcpSocket>
class reciever : public QObject
{
Q_OBJECT
public:
reciever(QObject *parent, QString address, QString _port);
QTcpSocket socket;
void connecting();
public slots:
void readTCP();
void _disconneted();
private:
QString ip;
QString data;
int port;
};
#endif // RECIEVER_H
main.cpp
C++ (Qt)
#include <QtCore/QCoreApplication>
#include <QTextCodec>
#include "reciever.h"
int main(int argc, char *argv[])
{
QTextCodec * myTextCodec = QTextCodec::codecForName("utf8");
QTextCodec::setCodecForLocale( myTextCodec);
QTextCodec::setCodecForTr( myTextCodec);
QTextCodec::setCodecForCStrings( myTextCodec);
// argc = 3;
// argv[1] = "127.0.0.1";
// argv[2] = "6178";
QCoreApplication a(argc, argv);
if(argc < 3)
{
qDebug("Запусти с параметрами, мудак");
return 0;
}
else
{
reciever r(NULL, QString(argv[1]), QString(argv[2]));
r.connecting();
}
return a.exec();
}
Программа не работает, не принимает строк никаких и ничего не отсылает.
Вот вывод приложения:
g-virus@g-virus-desktop: ./reciever 127.0.0.1 6178
Подключение...
Подключено к "127.0.0.1"
Ожидается прием сообщений:
Отключено
Подключение...
Подключено к "127.0.0.1"
Ожидается прием сообщений:
Так сначала подключайся, а потом уже жди сигнала удачного соединения, а не наоборот