QT之tcp通信的简单例程

QT之tcp通信的简单例程

    • 例1 客户端
    • 例2 服务端

例1 客户端

#include   
#include   
  
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   
#include   
#include   
  
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 通信的基础。

你可能感兴趣的:(qt,tcp/ip,开发语言)