QT単純TCPクライアント


Demoダウンロード:http://www.demodashi.com/demo/16932.html
最近、3つのエンドの相互接続データトランシーバ、1つのデバイスクライアント、1つのサーバ、1つのPCクライアントを作ります.サーバーはJAVA言語で書かれていますが、PC側はQTで書くつもりです.QTは、とても使いやすいツール(個人的な感じ).JAVAを勉強しているので、やってみてもいいですが、C++ベースはやはりあります.あまり話さないで、直接コードをつけます.
最初にアイテム**.proファイルに追加
QT += network

mainwindow.hコード
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 

#include 
#include 
#include 

QT_BEGIN_NAMESPACE


namespace Ui { class MainWindow; }

QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    //      
    void ReadData();
    void ReadError(QAbstractSocket::SocketError);
    void SendTcpData(QString msg);


private:
    Ui::MainWindow *ui;
    QTcpSocket *tcpClient; //  

};
#endif // MAINWINDOW_H

mainwindow.cpp 
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //   TCP
    tcpClient = new QTcpSocket(this);   //   
    tcpClient->abort();                 //      
    tcpClient->connectToHost("xxxxxIP  ",xxxx   ); //IP     

    connect(tcpClient, SIGNAL(readyRead()), this, SLOT(ReadData()));
    connect(tcpClient, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(ReadError(QAbstractSocket::SocketError)));

    if (tcpClient->waitForConnected(30000))  //     
    {
        qDebug() << "       !" ;
    }else{
        qDebug() << "      !" ;
    }

}

MainWindow::~MainWindow()
{
    delete this->tcpClient;
    delete ui;
}

/**
*       
*/
void MainWindow::ReadData()
{
    QByteArray buffer = tcpClient->readAll();
    if(!buffer.isEmpty())
    {
         qDebug() << "    ->"+buffer ;
    }
}

/**
*    
*/
void MainWindow::ReadError(QAbstractSocket::SocketError)
{
    qDebug() << "         !" ;
    tcpClient->disconnectFromHost();
}


/**
 * @brief MainWindow::SendTcpData
 * @param msg
 *     
 */
void MainWindow::SendTcpData(QString msg){
    if(tcpClient->isOpen()){
        QByteArray sendMessage = msg.toUtf8();
        tcpClient->write(sendMessage);
        tcpClient->flush();
    }
}

 
PS :  このケースでは、QTでTCPクライアントを構築する方法について説明します.