qt tcp 通信实例

时间:2022-04-23 11:11:04
#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;
}