Qt杂记——TCP

1.

    if(m_tcpSocket!=nullptr)
    {
        m_tcpSocket->flush();
        m_tcpSocket->abort();
        m_tcpSocket->deleteLater();
        m_tcpSocket = nullptr;
    }

(1)m_tcpSocket->flush()

调用m_tcpSocket->flush()函数可以强制将发送缓冲区中的数据立即发送出去,而不需要等待操作系统自动发送。这在某些特定的场景下是很有用的,比如需要及时将数据发送给对方,或者需要确保数据在某个时间点之前被发送出去。

需要注意的是,flush()函数只是将数据从发送缓冲区发送出去,并不保证对方已经接收到数据。如果需要确保数据已经被对方接收,可以使用其他机制,比如等待对方发送确认消息。

(2)m_tcpSocket->abort();

该函数是在Qt框架中的QTcpSocket类中定义的,用于处理TCP连接。调用abort()函数后,QTcpSocket对象会进入一个无连接状态,并且可以重新使用或销毁。

需要注意的是,调用abort()函数后,可能会触发QAbstractSocket::error()信号,以便通知应用程序连接已经中止。

(3)m_tcpSocket->deleteLater();

m_tcpSocket->deleteLater()是一个Qt框架中的函数,用于在稍后的时间点删除一个QObject对象。在这种情况下,m_tcpSocket是一个QTcpSocket对象,调用deleteLater()函数将会在事件循环中删除该对象。

(4)

Tool_TCP::~Tool_TCP()
{
    if(m_tcpSocket!=nullptr)
    {
        m_tcpSocket->flush();
        m_tcpSocket->abort();
        m_tcpSocket->deleteLater();
        m_tcpSocket = nullptr;
    }
}

这段代码是一个析构函数的实现,用于释放Tool_TCP类的对象时执行的操作。在析构函数中,首先判断m_tcpSocket是否为空指针,如果不为空,则执行以下操作:

  1. 调用flush()函数,将缓冲区中的数据写入到套接字中。
  2. 调用abort()函数,中止当前的网络连接。
  3. 调用deleteLater()函数,将m_tcpSocket对象标记为待删除,并在事件循环中删除该对象。
  4. 将m_tcpSocket指针设置为nullptr,以避免悬空指针的问题。

这段代码的作用是在释放Tool_TCP对象时,确保网络连接被正确关闭,并释放相关资源。

2.

3.

4.

相关推荐

  1. Qt杂记——TCP

    2024-02-14 13:52:01       50 阅读
  2. 杂记-浅析TCP预测攻击】

    2024-02-14 13:52:01       30 阅读
  3. 关于TCP vegas算法杂谈

    2024-02-14 13:52:01       62 阅读
  4. QTQT实现TCP协议

    2024-02-14 13:52:01       52 阅读
  5. QT TCP通信介绍

    2024-02-14 13:52:01       33 阅读
  6. http cookie,tcp syncookie 和 tcp fastopen 杂谈

    2024-02-14 13:52:01       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-14 13:52:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-14 13:52:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-02-14 13:52:01       82 阅读
  4. Python语言-面向对象

    2024-02-14 13:52:01       91 阅读

热门阅读

  1. 人工智能之数学基础【最小二乘法】

    2024-02-14 13:52:01       43 阅读
  2. Lua weak表

    2024-02-14 13:52:01       51 阅读
  3. nginx命名location跳转的模块上下文继承

    2024-02-14 13:52:01       48 阅读
  4. Oracle NLSSORT 拼音排序 笔画排序 部首排序

    2024-02-14 13:52:01       53 阅读
  5. 【算法题】102. 二叉树的层序遍历

    2024-02-14 13:52:01       47 阅读
  6. openJudge | 单词倒排 C语言

    2024-02-14 13:52:01       56 阅读
  7. 计算机视觉基础:矩阵运算

    2024-02-14 13:52:01       48 阅读
  8. UDP报文结构和注意事项

    2024-02-14 13:52:01       50 阅读
  9. C入门番外篇——师兄的不耻下问(2024是个闰年)

    2024-02-14 13:52:01       43 阅读
  10. Git教程I

    2024-02-14 13:52:01       53 阅读
  11. 爆笑详解c++中的string类型(一)

    2024-02-14 13:52:01       49 阅读