QTcpSocket соединение - PullRequest
0 голосов
/ 25 мая 2011

Я пытаюсь написать чат, используя QTcpSocket и QTcpServer. Несколько кусочков моего кода

Клиент

ChatClient::ChatClient(QObject *parent)
    : QObject(parent) {
    connect(&tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),
            this, SLOT(error(QAbstractSocket::SocketError)));
    connect(&tcpSocket, SIGNAL(connected()),
            this, SLOT(requestForID()));
    connect(&tcpSocket, SIGNAL(readyRead()),
            this, SLOT(receiveMessage()));
    tcpSocket.connectToHost(QHostAddress::LocalHost, PORT);
}

void ChatClient::requestForID() {
    qDebug() << "Connected, requesting for ID";
    QByteArray segment;
    QDataStream out(segment);
    out.setVersion(QDataStream::Qt_4_7);
    out << (quint16)0 << ID;
    out.device()->seek(0);
    out << (quint16)(segment.size() - sizeof(quint16));
    tcpSocket.write(segment);
}

void ChatClient::error(QAbstractSocket::SocketError error) {
    qDebug() << "Socket error" << error;
}

Сервер

ChatServer::ChatServer(QObject *parent)
    : QObject(parent) {
    if (!tcpServer.listen(QHostAddress::LocalHost, PORT)) {
        qDebug() << "Unable to start the server"
                 << tcpServer.errorString();
    }
    connect(&tcpServer, SIGNAL(newConnection()),
            this, SLOT(processConnection()));
}

Клиентский сокет никогда не подключается. Ошибка никогда не печатается. ПОРТ = 6178. Runnig KUbuntu. Пинг до localhost от bash успешен. Что я делаю не так?

1 Ответ

1 голос
/ 26 мая 2011

Я не вижу ошибок в вашем коде, вы уверены, что ваш Qt и "сеть" работают правильно? Qt должен выдать ошибку, но по крайней мере ваши фрагменты кода здесь выглядят корректно для меня. Возможно, ваш код никогда не вызывается, добавьте несколько отладочных сообщений в методы.

Наконец вы можете собрать примеры Qt Network и проверить, работает ли это на вашей машине. Если у вас нет примеров, посмотрите здесь: http://doc.qt.io/qt-5/examples-network.html (Fortune Server / Client for TCP)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...