QtNetwork连接

简介: QtNetwork连接

1. Network.h

#include <QtNetwork>
class Network : public QWidget
{
    Q_OBJECT
public:
    NetworkPortTransmission(QWidget *parent = nullptr);
    ~NetworkPortTransmission();
public:
    void ConnectNet();
    void SendMessage();
    void ReceiveMessage();
public:
    QTcpSocket *tcpClient;
    QByteArray receviedMsg;
private:
    Ui::NetworkPortTransmission *ui;
};

2. Network.cpp

Network::Network(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Network)
{
    ui->setupUi(this);
    tcpClient = new QTcpSocket;
    tcpClient->abort();
    connect(tcpClient, &QTcpSocket::readyRead, this, &NetworkPortTransmission::ReceiveMessage);
}

ConnectNet();

void Network::ConnectNet()
{
    QString ip = ui->lineEdit_ip->text();
    QString port = ui->lineEdit_port->text();
    if(ui->pushButton_connect->text() == "connect")
    {
        if(ip.isEmpty() && port.isEmpty())
        {
            LogMessage("ip or port is NULL");
        }
        else
        {
            tcpClient->connectToHost(ip, port.toInt());
        }
        if(!tcpClient->waitForConnected(1000))
        {
            LogMessage("Connection error, please check your network");
            return;
        }
        ui->lineEdit_ip->setEnabled(false);
        ui->lineEdit_port->setEnabled(false);
        ui->pushButton_connect->setText("disconnect");
        ui->pushButton_connect->setStyleSheet("color:green");
        LogMessage("connect success");
    }
    else
    {
        tcpClient->disconnectFromHost();
        if(tcpClient->state() == QAbstractSocket::UnconnectedState || tcpClient->waitForDisconnected(1000))
        {
            ui->lineEdit_ip->setEnabled(true);
            ui->lineEdit_port->setEnabled(true);
            ui->pushButton_connect->setText("connect");
            ui->pushButton_connect->setStyleSheet("color:black");
            LogMessage("disconnect success");
        }
    }
}

  SendMessage();

void NetworkPortTransmission::SendMessage()
{
    QString sendMessage = ui->lineEdit_sendMessage->text();
    tcpClient->write(QByteArray::fromHex(sendMessage.toLatin1()));
}

ReceiveMessage() ;

void NetworkPortTransmission::ReceiveMessage()
{
    QByteArray msg = tcpClient->readAll();
    receviedMsg = msg.toHex().toUpper();
}


相关文章
|
编译器 C语言
#include
#include
635 0
|
2月前
|
消息中间件 人工智能 安全
构建企业级 AI 应用:为什么我们需要 AI 中间件?
阿里云发布AI中间件,涵盖AgentScope-Java、AI MQ、Higress、Nacos及可观测体系,全面开源核心技术,助力企业构建分布式多Agent架构,推动AI原生应用规模化落地。
326 0
构建企业级 AI 应用:为什么我们需要 AI 中间件?
|
9月前
|
SQL 消息中间件 Serverless
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
302 4
|
编解码 程序员
(12)Qt事件系统(one)
本文详细介绍了Qt事件系统,包括各种系统事件、鼠标事件、键盘事件、定时器等的处理方法和示例代码。
476 0
(12)Qt事件系统(one)
【Java基础面试五】、 int类型的数据范围是多少?
这篇文章回答了Java中`int`类型数据的范围是-2^31到2^31-1,并提供了其他基本数据类型的内存占用和数值范围信息。
【Java基础面试五】、 int类型的数据范围是多少?
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
270 0
|
自然语言处理 机器人 Python
LangChain 中的提示模板
提示模板是 LangChain 中一个强大的功能,可以帮助开发人员快速构建复杂的应用程序。本文将详细介绍 LangChain 中的提示模板,包括其概念、设计、实现和使用案例。
333 6
|
算法
IP子网到底怎么划分【全网最详解】!!!
IP子网到底怎么划分【全网最详解】!!!
858 1
|
SQL 缓存 监控
掌握了这些优化技巧,再也不用担心接口性能上不去了!
优化接口性能对每个后端开发同学来说见惯不惯了,也是一项必备的技能,因为我们平时开发中都会对外提供接口,性能差的话,功能多少会有影响。