QTcpSocket连接

时间:2011-05-25 19:37:15

标签: qt

我正在尝试使用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()));
}

客户端套接字永远不会连接。永远不会打印错误。 PORT = 6178。 Runnig KUbuntu。从bash ping到localhost是成功的。 我做错了什么?

1 个答案:

答案 0 :(得分:1)

我没有看到您的代码中有任何错误,您确定您的Qt和“网络”是否正常工作? Qt应该发出错误,但至少你的代码片段对我来说是正确的。也许你的代码永远不会被调用,在方法中添加一些调试消息。

最后,您可以构建Qt网络示例并测试它是否适用于您的计算机。如果您没有这些示例,请查看此处:http://doc.qt.io/qt-5/examples-network.html(Fortune Server / Client for TCP)