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


相关文章
|
存储 编译器 文件存储
如何更改IDEA项目的路径
如何更改IDEA项目的路径
如何更改IDEA项目的路径
|
机器学习/深度学习 人工智能 自然语言处理
2024年AI辅助研发:科技创新的引擎
2024年AI辅助研发:科技创新的引擎
|
SQL 消息中间件 Serverless
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
375 4
|
监控 Ubuntu 安全
如何在 Ubuntu Linux 中设置和使用 FTP 服务器?
如何在 Ubuntu Linux 中设置和使用 FTP 服务器?
594 2
如何在 Ubuntu Linux 中设置和使用 FTP 服务器?
|
编解码 程序员
(12)Qt事件系统(one)
本文详细介绍了Qt事件系统,包括各种系统事件、鼠标事件、键盘事件、定时器等的处理方法和示例代码。
553 0
(12)Qt事件系统(one)
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
325 0
|
JavaScript 前端开发 NoSQL
技术心得:微信小助手之wechaty模块(个人笔记,于人无用)
技术心得:微信小助手之wechaty模块(个人笔记,于人无用)
260 0
|
自然语言处理 机器人 Python
LangChain 中的提示模板
提示模板是 LangChain 中一个强大的功能,可以帮助开发人员快速构建复杂的应用程序。本文将详细介绍 LangChain 中的提示模板,包括其概念、设计、实现和使用案例。
364 6
|
算法
IP子网到底怎么划分【全网最详解】!!!
IP子网到底怎么划分【全网最详解】!!!
1340 1

热门文章

最新文章