qt简单的TCP编程

在这里插入图片描述

服务器:

#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);
}

客户端:

#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");
    }
}

源码:https://github.com/sunlianqi/qt/tree/master/tcp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值