最近使用isValid函数来判断tcp连接是否有效,然后发现断开tcp仍然有效,上网查了资料搜寻:

原文链接:https://blog.csdn.net/lizuobin2/article/details/52293984

我曾经多次在 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 吧。


--------------------- 
作者:Linux学习之路 
来源:CSDN 
原文:https://blog.csdn.net/lizuobin2/article/details/52293984 
版权声明:本文为博主原创文章,转载请附上博文链接!

Qt QAbstractSocket::isValid()相关推荐

  1. Qt 可编辑的树模型(Tree Model)的一个实例

    本实例来自Qt 官方的一个实例(Editable Tree Model Example) 简介: 本实例是关于怎样基于模式视图框架下的 树模型的实现. 该模型支持可编辑的表单项,自定义表头,删除插入行 ...

  2. Qt 快速入门学习笔记

    Qt 快速入门学习笔记 环境安装 环境配置以及安装 安装包下载地址 1.windows安装 msvc编译器模块需要安装Windows软件开发工具包. MinGW是Windows平台使用GNU工具导入库 ...

  3. Qt中的网络编程(TCP)

    在Qt中网络编程主要由Qt Network模块来编写基于TCP/Ip的网络程序,其中提供了许多的类: 可以点击该链接查看:Qt网络C++类|Qt网络 5.15.12  常见的有: QTcpServer ...

  4. Qt实现telnet服务【记录】

    最近在做关于FlightGear的一个指令控制的研究,由于每次都需要手动从cmd跳到telnet中,所以实现拿Qt实现一个telnet功能的小模块. 目录 FlightGear(开源) 源码 项目结构 ...

  5. Qt QLocalSocket 进程间通信

    简述 QIODevice 做为QLocalSocket的父类,我们先做一下简单的介绍 QIODevice类是Qt中所有输入/输出设备的基本接口类. QIODevice为支持读取和写入数据块的设备提供了 ...

  6. 【正点原子Linux连载】第十一章 网络编程 摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  7. QT 网络聊天室设计实验报告

    一.实验目的与要求 (1)了解QT Network模块基本知识 (2)掌握网络访问接口的方法 (3)熟悉获取网络接口信息的方法 二.实验内容与安排方式 (1)了解QT Network模块基本知识 (2 ...

  8. Qt CS架构 客户端代码编写技巧 QTcpSocket

    QT网络编程解说 QTcpSocket网络编程细节 这里是更新版本的 Qt 网络编程解说 QT网络编程解说 很多人在编写网络代码的时候,客户端代码编写的功能总不能胜任所需要的功能能力,现在我将编写网络 ...

  9. linux+Qt 下利用D-Bus进行进程间高效通信的三种方式

    linux+Qt 下利用D-Bus进行进程间高效通信的三种方式 原文链接: https://www.cnblogs.com/wwang/archive/2010/10/27/1862552.html ...

  10. qt 拖拽 修改大小(二)

    最近项目需要实现windows下橡皮筋的效果,所以对此做了一些了解,特此记录. 首先windows系统是支持橡皮筋效果的,需要使用win32方 法:SystemParametersInfo(SPI_S ...

最新文章

  1. Compressor detection can only be called on some ……
  2. DFT的准备(一)(对离散序列的傅里叶分析大总结)
  3. jQuery对象和DOM对象互转的问题、jQuery文件引入问题、DOM版本的网页开关灯
  4. Bumblebee微服务网关之consul服务发现
  5. 梦聆轻量化音乐播放器源码
  6. CCNP-17 OSPF试验13(BSCI)
  7. [模板]匈牙利算法(二分图匹配)
  8. ElasticSearch5.0——IK词库加载
  9. Oracle oci.dll下载地址
  10. 联想·云计算中心运维服务(1+X中级)教材出版
  11. Qt开发经验小技巧196-200
  12. Matlab安装 解决error114
  13. 如何破解zip压缩文件的密码问题?
  14. 简简单单几行Python代码就能暴力破解网站登录密码,真有这么强吗?
  15. 「3D视觉技术交流群」精华帖与关键问题
  16. PHP 垃圾回收机制
  17. FPGA的进阶项目——开源示波器
  18. [uboot]MLO和uboot-spl.bin, uboot.img和uboot.bin
  19. 使用 OpenWhisk 自建 Serverless 服务
  20. 图形界限命令在命令行输入_设置图形界限的命令为在命令行输入

热门文章

  1. 通俗理解动态库与静态库区别
  2. 企业微信网页应用开发 - 开发环境搭建
  3. 《2017中国云计算评测报告》
  4. opencv双目测距
  5. Spark学习资料汇总
  6. 2017阿里巴巴实习生C/C++研发内推一面、二面经历
  7. 小心微信被封号,这码千万不要扫!
  8. uniapp页面打印pdf文件
  9. rms 公式 有效值_RMS,DC,MEAN,RMN到底有什么区别?
  10. (XWZ)的python学习笔记Ⅵ——进程和线程