QT之tcp通信的简单例程

QT之tcp通信的简单例程

例1 客户端

#include <QTcpSocket>  
#include <QHostAddress>  
  
int main(int argc, char *argv[])  
{  
    QApplication app(argc, argv);  
  
    QTcpSocket socket;  
    socket.connectToHost(QHostAddress::LocalHost, 1234);  
    if (socket.waitForConnected()) {  
        socket.write("Hello, server!");  
        if (socket.waitForBytesWritten()) {  
            if (socket.waitForReadyRead()) {  
                qDebug() << "Received data:" << socket.readAll();  
            }  
        }  
    }  
  
    return app.exec();  
}

例2 服务端

#include <QTcpServer>  
#include <QTcpSocket>  
#include <QMessageBox>  
  
class MyTcpServer : public QTcpServer  
{  
    Q_OBJECT  
  
public:  
    explicit MyTcpServer(QObject *parent = 0) : QTcpServer(parent)  
    {  
        if (!this->listen(QHostAddress::Any, 1234)) {  
            QMessageBox::critical(0, "Server Error", "Unable to start the server:" + this->errorString());  
            exit(EXIT_FAILURE);  
        }  
    }  
  
protected:  
    void incomingConnection(qintptr socketDescriptor) override  
    {  
        QTcpSocket* socket = new QTcpSocket(this);  
        socket->setSocketDescriptor(socketDescriptor);  
  
        connect(socket, &QTcpSocket::readyRead, this, [socket]() {  
            QByteArray data = socket->readAll();  
            qDebug() << "Received data:" << data;  
            socket->write("Hello, client!");  
        });  
  
        connect(socket, &QTcpSocket::disconnected, this, [socket]() {  
            qDebug() << "Client disconnected:" << socket->peerAddress().toString();  
            socket->deleteLater();  
        });  
    }  
};  
  
int main(int argc, char *argv[])  
{  
    QApplication app(argc, argv);  
    MyTcpServer server;  
    return app.exec();  
}

Qt 的 TCP 类(QTcpSocket 和 QTcpServer)创建简单的 TCP 客户端和服务器。在示例 1 中,我们创建了一个 TCP 客户端,连接到本地主机上的端口 1234,并发送一条消息给服务器。在示例 2 中,我们创建了一个 TCP 服务器,监听本地主机上的端口 1234,并在接收到客户端连接时发送一条消息给客户端。这些示例可以作为你开始使用 Qt TCP 通信的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

付宇利

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值