QT中基于TCP套接字的网络通信需要用到两个类
- QTcpServer:服务器类,用于监听客户端连接和客户端建立连接
- QTcpSocket:通信套接字类,客户端和服务端都需要使用*
这两个类都属于网络通信的network
需要在工程路径下添加network
QT += core gui network
服务器
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->port->setText("8899");
ui->ip->setText("127.0.0.1");
setWindowTitle("客户端");
m_tcp = new QTcpSocket(this);
connect(m_tcp,&QTcpSocket::readyRead,this,[=](){
QByteArray data = m_tcp->readAll();
ui->record->append("服务端:"+data);
});
connect(m_tcp,&QTcpSocket::disconnected,this,[=]()
{
ui->connect->setEnabled(true);
ui->disconnect->setDisabled(true);
m_tcp->close();
m_status->setPixmap(QPixmap(":/red.png").scaled(20,20));
ui->record->append("断开连接");
});
connect(m_tcp,&QTcpSocket::connected,this,[=](){
m_status->setPixmap(QPixmap(":/green.png").scaled(20,20));
ui->connect->setDisabled(true);
ui->disconnect->setEnabled(true);
ui->record->append("连接成功");
});
ui->disconnect->setDisabled(true);
m_status = new QLabel;
m_status->setPixmap(