qt simple TCP programming

Insert picture description here

server:

#include "widget.h"
#include "ui_widget.h"
#include <QHostAddress>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    setWindowTitle("服务器");
    m_server = new QTcpServer(this);
    if(m_server->listen(QHostAddress::Any,1234))
    {
        ui->textEdit->append("listen success");
    }
    else
    {
        ui->textEdit->append("listen error");
    }
    connect(m_server,SIGNAL(newConnection()),this,SLOT(newClient()));
}

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

void Widget::on_pushButton_clicked()
{
    m_socket->write(QString("服务器:" + ui->lineEdit->text()).toStdString().c_str());
}

void Widget::newClient()
{
    m_socket = m_server->nextPendingConnection();
    ui->textEdit->append("新的客户端连接:" + QString::number(m_socket->socketDescriptor()));
    connect(m_socket,SIGNAL(readyRead()),this,SLOT(serverReadData()));
}

void Widget::serverReadData()
{
    QString str = m_socket->readAll();
    ui->textEdit->append(str);
}

Client:

#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    setWindowTitle("客户端");
    m_socket = new QTcpSocket(this);
    ui->lineEdit_ip->setText("127.0.0.1");
    ui->lineEdit_port->setText("1234");
    connect(m_socket,SIGNAL(readyRead()),this,SLOT(readData()));
}

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

void Widget::readData()
{
    ui->textEdit->append(m_socket->readAll());
}

void Widget::on_pushButton_send_clicked()
{
    QString str = "客户端:" + ui->lineEdit_send->text();
    m_socket->write(str.toStdString().c_str());
}

void Widget::on_pushButton_link_clicked()
{
    m_socket->connectToHost(ui->lineEdit_ip->text(),ui->lineEdit_port->text().toInt());
    if(m_socket->waitForConnected(3000))
    {
        ui->textEdit->append("connect server success");
    }
    else
    {
        ui->textEdit->append("connect server fail");
    }
}

Source code: https://github.com/sunlianqi/qt/tree/master/tcp

Guess you like

Origin blog.csdn.net/sinat_33859977/article/details/100052179