zoukankan      html  css  js  c++  java
  • Qt 菜鸟的坑 QAbstractSocket::isValid()

    我曾经多次在 Qt socket 编程中使用 tcpSocket.isValid 来判断我当前的连接是否可用,最近写程序时才发现此法并不妥当。

        bool QAbstractSocket::isValid() const
        Returns true if the socket is valid and ready for use; otherwise returns false.
        

    Note: The socket's state must be ConnectedState before reading and writing can occur.
        See also state().

         官方的帮助文档甚是模糊,说如果 socket 可用,或者已经准备好了被用返回 true,否则返回 false ,对于我个人的理解,socket 只有在正常的 connected 的状态才应该是 valid 的,但是我发现,比如我调用了 disconnectfromhost 去断开连接,disconnectfromhost 是会等待 socket 将未发送完的数据发送完毕之后才会真正的断开连接,此时 socket 的状态是正在断开ing...这时候 qt 认为 socket 依旧是 valid ,简直就是个火坑啊。

        避免被 valid 所坑害,判断 socket 的 state 是最佳的选择

        socket 有以上 6 种状态,但是哪些状态下是 valid 不知道。因此,根据你的需要来判断 state 吧。

  • 相关阅读:
    (字符串)子串变位词
    反转链表 II
    翻转链表
    覆盖索引
    MySQL索引结构之Hash索引、full-text全文索引(面)
    MySQL索引结构之B+树索引(面)
    MYSQL 存储引擎(面)
    MySQL架构(面)
    如何在Linux Mint 20系统上安装Pip
    如何在CentOS 8系统服务器上安装Nginx
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/6473872.html
Copyright © 2011-2022 走看看