1. 程式人生 > >qt tcp 通信實例

qt tcp 通信實例

ear parent clas next new his edi ptr include

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QHostAddress>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->socket = new QTcpSocket(this);
}
void MainWindow::on_pushButton_2_clicked(){
    this->socket->close();
}
void MainWindow::on_pushButton_clicked(){
    this->socket->connectToHost("127.0.0.1",80000,QTcpSocket::ReadWrite);
    connect(this->socket,SIGNAL(connected()),this,SLOT(connected()));
}
void MainWindow::connected(){
    QMessageBox::about(this,"notice","connect successful");
    connect(this->socket,SIGNAL(readyRead()),this,SLOT(readyread()));
}
void MainWindow::readyread(){
    QMessageBox::about(this,"notice","ready read");
    QByteArray arr = this->socket->readAll();
    QDataStream *des = new QDataStream(&arr,QIODevice::ReadOnly);//重點
    QString str1;
    QString str2;
    (*des)>>str1>>str2;
    qDebug()<<str1+str2;
    QMessageBox::about(this,"x",str1+str2);

}

MainWindow::~MainWindow()
{
    delete ui;
}

  服務端

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

#include <QTcpServer>
#include <QTcpSocket>
#include <QMessageBox>
#include <QByteArray>
#include <QString>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->socket = nullptr;
    this->server = new QTcpServer(this);
    this->server->listen(QHostAddress::Any,80000);
    QObject::connect(this->server,SIGNAL(newConnection()),this,SLOT(newConnect()));
}
void MainWindow::newConnect(){
    this->socket = this->server->nextPendingConnection();
    QMessageBox::about(this,"notice","new connect");
    connect(this->socket,SIGNAL(readyRead()),this,SLOT(ReceiveData()));
}
void MainWindow::ReceiveData(){
    QByteArray arr = this->socket->readAll();
    QDataStream dst(arr);
    QString str1;
    QString str2;
    dst>>str1>>str2;
    qDebug()<<str1<<str2;
}
void MainWindow::on_pushButton_clicked(){
    QString str = this->ui->lineEdit->text();
    QByteArray arr;
    QDataStream dst(&arr,QIODevice::ReadWrite);
    dst<<QString("message:")<<str;
    this->socket->write(arr);
}
void MainWindow::on_pushButton_2_clicked(){
    this->socket->close();
}

MainWindow::~MainWindow()
{
    delete ui;
}

  

qt tcp 通信實例