QT 简单TCP客户端

Demo下载:http://www.demodashi.com/demo/16932.html

最近要搞一个三端互联数据收发器,一个设备客户端,一个服务器,一个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客户端!  

你可能感兴趣的:(QT,TCP,前端)