• 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 吧。

  • 相关阅读:
    javascript题目,如何在重写alert后还能正常弹出alert
    mass Framework support模块 v2
    javascript suggest效果
    HTML <div> 标签的 align 属性
    SQL GROUP BY 语句
    SQL UPDATE 语句
    HTML <font> 标签
    JavaScript eval() 函数
    HTML DOM Checkbox 对象
    CSS cursor 属性
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/6473872.html
Copyright © 2020-2023  润新知