QT开发中文网

Qt的QTCP的代码案例

以下是一个使用Qt的QTcpSocket实现客户端和服务器之间简单通信的代码案例:

服务器端:

#include <QTcpServer>
#include <QTcpSocket>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTcpServer server;
    if (!server.listen(QHostAddress::Any, 1234)) {
        qDebug() << "Failed to start server";
        return -1;
    }
    
    qDebug() << "Server started. Listening on port 1234";

    QObject::connect(&server, &QTcpServer::newConnection, [&]() {
        while (server.hasPendingConnections()) {
            QTcpSocket *socket = server.nextPendingConnection();
            qDebug() << "New connection established.";

            QObject::connect(socket, &QTcpSocket::readyRead, [=]() {
                QByteArray data = socket->readAll();
                qDebug() << "Received data from client:" << data;

                // 回复客户端消息
                socket->write("Message received");
            });
        }
    });

    return a.exec();
}

客户端:

#include <QTcpSocket>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QTcpSocket socket;

    // 连接到服务器
    socket.connectToHost("127.0.0.1", 1234);
    
    if (!socket.waitForConnected(3000)) {
        qDebug() << "Failed to connect to server";
        return -1;
    }

    qDebug() << "Connected to server";

    // 发送数据到服务器
    QByteArray message = "Hello from client";
    
    socket.write(message);
    
   // 等待服务器回复消息
   if (socket.waitForReadyRead(3000)) {
        QByteArray response = socket.readAll();
        qDebug() << "Server response:" << response;
    }
    
    // 关闭连接
    socket.close();

    return a.exec();
}

上述代码示例中,服务器端使用QTcpServer创建一个TCP服务器,并监听本地所有IP地址的1234端口。当有新的客户端连接到服务器时,会触发newConnection信号,并在Lambda表达式中处理新连接。

在Lambda表达式中,我们将每个新连接的QTcpSocket对象与readyRead信号绑定,在收到客户端发送的数据时进行处理。然后,服务器向客户端回复消息。

客户端使用QTcpSocket创建一个TCP套接字,并调用connectToHost方法连接到服务器。如果成功建立连接,则发送一条消息给服务器,并等待服务器回复消息。最后,关闭连接。

请注意,以上代码仅为示例,请根据实际需求进行适当修改和完善。同时也需要考虑错误处理、断开重连、线程安全等方面的问题。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://qt.0voice.com/?id=11749

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?