QT 概述

Qt是一款跨平台的C++应用程序开发框架,由挪威的Trolltech公司(现已被Digia收购)开发和维护。它提供了丰富的工具和库,使开发者能够轻松地创建各种类型的图形界面应用程序、嵌入式系统,音视频流媒体播放器和其他软件项目。Qt框架可以在多个操作系统上运行,包括Windows、macOS、Linux以及一些移动平台如Android和iOS。它被广泛应用于软件开发领域,特别适合构建用户友好的图形化界面。

优秀的Qt工程师应该具备以下技术:

  1. C++编程:Qt是基于C++开发的,熟练掌握C++语言特性和面向对象编程思想对于Qt开发至关重要。

  2. Qt框架:深入理解Qt框架的各种模块、类和功能,包括界面设计、信号与槽机制、事件处理等。

  3. 跨平台开发:了解不同平台(如Windows、macOS、Linux)下的开发特性和API,并能够编写可移植的代码。

  4. 图形界面设计:熟悉Qt提供的UI设计工具,如Qt Designer,能够设计出美观且用户友好的界面。

  5. 数据库操作:掌握Qt提供的数据库访问模块(如Qt SQL),能够进行数据库连接、查询和操作。

  6. 多线程编程:了解多线程编程的基本原理,并能够使用Qt提供的多线程支持来实现并发处理。

  7. 网络通信:熟悉网络编程相关知识,掌握Qt网络模块(如Qt Network)进行网络通信开发。

  8. 调试与性能优化:具备良好的调试技巧和分析问题能力,在开发过程中能够定位并解决各种bug,并进行性能优化。

  9. 版本控制:熟练使用版本控制工具(如Git),能够进行团队协作和代码管理。

今天就简要的介绍一下关于QT  network方面的文章

1.TCP/IP(Transmission Control Protocol)传输控制协议:全双工的 基于字节流的一种通信协议  分别具有TCP三次握手和四次握手的原则 

2.Udp:

UDP(User Datagram Protocol)是一种面向无连接的传输层协议。与TCP相比,UDP不提供可靠的数据传输和流控制机制,而是以简洁高效为目标。UDP在网络通信中常用于实时性要求较高的应用场景,如音视频传输、实时游戏等。

UDP以数据报(Datagram)为单位进行通信,每个数据报都独立发送,并没有建立持久的连接。它使用简单的首部格式包含源端口号和目标端口号信息,并且没有拥塞控制、重传机制等复杂功能。因此,在发送数据时不能保证其可靠性、顺序性或完整性,也不会进行丢失数据的重新传输。

3.http/https 

HTTP(Hypertext Transfer Protocol)是一种应用层协议,用于在客户端和服务器之间传输超文本数据。它是基于TCP/IP协议的,采用请求-响应模型。

4.Websocket

WebSocket是一种在客户端和服务器之间实现全双工通信的协议。它建立在HTTP协议基础上,通过使用标准化的握手过程,在客户端和服务器之间创建持久性的连接。

5.Ftp

FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的协议。它允许用户通过客户端和服务器之间建立连接,进行文件上传、下载和管理。

1.TCP/IP的使用 

#include <QtNetwork>
#include <QObject>
#include <QTcpSocket>//实现TCP/IP的通信类
class TcpClient : public QObject
{
    Q_OBJECT

public:
    TcpClient(QObject *parent = nullptr) : QObject(parent)
    {
        connect(&socket, SIGNAL(connected()), this, SLOT(connected()));
        connect(&socket, SIGNAL(disconnected()), this, SLOT(disconnected()));
        connect(&socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
    }

public slots:
    void connectToServer(const QString& ipAddress, quint16 port)
    {
        socket.connectToHost(ipAddress, port);
    }

    void connected()
    {
        qDebug() << "Connected to server";
        // 发送数据给服务器
        socket.write("Hello Server!");
        // 读取服务器返回的数据
        socket.flush();
    }

    void disconnected()
    {
        qDebug() << "Disconnected from server";
    }

    void readyRead()
    {
        QByteArray data = socket.readAll();
        qDebug() << "Received data from server:" << data;
    }

private:
    QTcpSocket socket;
};

int main(int argc, char *argv[])
{
   QApplication app(argc, argv);

   TcpClient client;
   client.connectToServer("127.0.0.1", 1234); // 连接到服务器,IP地址和端口号根据实际情况修改

   return app.exec();
}

2 .UDP

#include <QCoreApplication>
#include <QUdpSocket>//实现UDP通信类

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

    QUdpSocket socket;
    
    // 绑定本地端口
    if (!socket.bind(QHostAddress::Any, 1234)) {
        qDebug() << "Failed to bind socket";
        return -1;
    }

    qDebug() << "Listening for UDP packets on port" << socket.localPort();
    
    while (true) {
        // 接收数据报
        QByteArray buffer;
        buffer.resize(socket.pendingDatagramSize());
        
        QHostAddress senderAddress;
        quint16 senderPort;

        socket.readDatagram(buffer.data(), buffer.size(), &senderAddress, &senderPort);
        
        qDebug() << "Received data from" << senderAddress.toString() << ":" << senderPort;
        qDebug() << "Data:" << buffer;

        // 回复数据报
        QByteArray responseData = "Hello Client!";
        
        socket.writeDatagram(responseData, senderAddress, senderPort);
    }

    return app.exec();
}

至于http/https  Websocket Ftp 这些模块 小编想在以后的文章再分享  今天就到这里了 欢迎大家来提出宝贵的建议

对了 在这里小编想分享一下课程 这个课程质量还行 欢迎大家收听:https://xxetb.xetslk.com/s/2PjJ3T

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值