秋招日记(三十一)小米投递&QT文档阅读翻译

学习记录

  • QTNetwork文档阅读
  • QT NB!
  • 明天写一点样例代码

投递记录

小米 正式批 深圳 软件开发c++方向

Network Programming with QT

  • QT 帮助文档翻译和阅读笔记

  • QTNetwork介绍

    • Qt Network模块提供了用以编写TCP/IP客户端和服务器的类
    • 其提供的类可以分为三大块
      • 较低抽象级别的类:代表基础的网络连接概念
        • QTcpSocket
        • QTcpServer
        • QUdpSocket
      • 较高抽象级别的类:用来支持常见网络协议的实现
        • QNetworkRequest
        • QNetworkReply
        • QNetworkAccessManager
      • 用于管理网络连接的类:
        • QNetworkConfiguration
        • QNetworkConfigurationManager
        • QNetworkSession
  • QTNetwork包含的所有类


  • 与HTTP和FTP相关的高级网络操作

    • QT中的网络访问API是常见网络操作的类的集合,该API为使用的特定操作和协议提供了一个抽象层,并在这个抽象层上只提供高级概念的类,函数和信号,隐藏了其内部细节。
    • 网络请求由QNetworkRequest类表示,它还充当与请求相关的信息的一般容器,如任何头部信息和使用的加密。构造请求对象时指定的URL决定了请求使用的协议。目前支持HTTP、FTP和本地文件url的上传和下载
    • 对网络请求的应答由QNetworkReply类表示;当请求被处理时,QNetworkAccessManager创建应答。QNetworkReply提供的信号可以用来单独监控每个回复,也可以选择使用管理者的信号来及监控回复。由于QNetworkReply是QIODevice的一个子类,因此回复可以被同步或异步处理,也即回复操作可以时阻塞的也可以是非阻塞的。
    • 网络操作的协调由QNetworkAccessManager类执行。一旦创建了一个请求,这个类就被用来分派它并发出信号来报告它的进度。管理器还协调使用cookie在客户端存储数据、身份验证请求和代理的使用
    • 每个应用程序或库可以创建一个或多个QNetworkAccessManager实例来处理网络通信
  • 基于QTcpSocket和QTcpServer使用TCP

    • TCP是一种可靠的、面向连接和面向流的传输协议
    • QTcpSocket类中提供了TCP的接口,使用QTcpSocket类可以实现一些标准的应用层协议,例如:POP3、SMTP和NNTP,也能用来实现一些用户自己实现的协议
    • TCP连接基于host和port,可以通过QTcpSocket::peerAddress()QTcpSocket::peerPort() 来获得连接方的host和port
    • QTcpSocket是异步的,其通过信号来报告其状态变化和错误。
    • QTcpSocket的工作基于事件循环(event loop),它依赖于事件循环来检测传入数据并自动刷新传出数据。
    • QTcpSocket代表了两个独立的数据流,一个用于读,一个用于写。可以通过QTcpSocket::write() 和 **QTcpSocket::read()**读写数据
    • QTcpSocket继承了QIODevice,所以可以像处理一个流对象的方式,处理QTcpSocket对象
    • 使用QTcpSerevr类来管理到来的TCP连接,使用QTcpServer::listen()监听连接,当有连接到来时,QTcpServer对象将会发送一个QTcpServer::newConnection()信号,相对这个型号的槽函数中可以使用QTcpServer::nextPendingConnection()函数来接受这个连接,并创建一个QTcpSocket对象来与发起连接的客户端通信。
    • QTcpSocket通常以异步的方式工作,但是其也可以以同步的方式工作。
  • 基于QUdpSocket使用UDP

    • UDP是一个轻量、不可靠,面向数据包,无连接的传输协议,在可以接受数据不可靠的情况下使用。
    • QUdpSocket类可以实现UDP数据包的发送和接受,其接口与QTcpSocket一致
    • UDP与TCP的区别在于UDP通过一个含有目的地址和端口的有限大小的包来发送数据,而TCP是基于一个连续的数据流进行数据传输。
    • **QUdpSocket::bind()为接收传入的数据报准备套接字,很像TCP服务器的QTcpServer::listen()每当有一个或多个数据报到达时,QUdpSocket就会发出readyRead()信号。调用QUdpSocket::readDatagram()**来读取数据报。
#我的秋招日记##qt##小米##2023一起秋招吧#
全部评论
这个岗位我好像没找到
点赞 回复 分享
发布于 2022-12-02 00:35 北京
QT主要是实现图像化界面的吗?
点赞 回复 分享
发布于 2022-08-26 19:20 陕西

相关推荐

03-26 12:00
已编辑
门头沟学院 Java
offer魅魔_oc...:100-200每天,你还要倒贴100
点赞 评论 收藏
分享
评论
8
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务