最近使用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. POJ2299 Ultra-QuickSort
  2. 基于机器学习的捡球机器人设计与实现(探索)第2篇——7步完成opencv的安装(20190112)
  3. 解决chrome安装扩展插件导入.crx文件提示:程序包无效的错误
  4. easybcd android x86,【图片】不需U盘,简单三步,Win系统变Win+Android双系统!【androidx86吧】_百度贴吧...
  5. corosync/openais+pacemaker+drbd+web实现高可用群集
  6. 网络计算机热词,2017年的首个网络热词就这样被刷屏了!
  7. linux.命令格式,【Linux基础知识】Linux命令格式介绍
  8. MATLAB产生线性等分量函数 linspace
  9. Oracle 中 start with 递归查询、case when 条件表达式、rowid 伪列去重
  10. 【计算机网络】HTTP协议详解
  11. Vue router原理
  12. 用Credential Harvester Attack Method登录人人网
  13. 从法外狂徒张三卖房引起的代理模式
  14. 什么蓝牙耳机打游戏好?打游戏好用的无线蓝牙耳机
  15. 如何实现线上收款 到不同账户支付宝账户
  16. 062_《Delphi7完美经典》
  17. dataguard 版本必须一致吗?
  18. 在CloudFoundry上部署独立Java应用
  19. 好嗨哦!用Python进行诗歌接龙
  20. 可爱又迷人的反叛角色

热门文章

  1. 网络工程师中级(知识产权与标准化)
  2. 最快倾斜摄影三维建模-台式、便携、多机集群配置推荐
  3. 这条命令帮我在一分钟内修改了200台远程服务器密码!
  4. 绿化版IDEA启动时报IF you already have a 64-bit jdk错误的解决
  5. android 按钮自动按下,按键点击精灵app官方版-按键点击精灵(全能自动点击连点器)下载v2.200.2安卓版-西西软件下载...
  6. vue下鼠标按住滑动
  7. 电芯容量在前期循环中容量增加_锂电池随着使用次数增加而最大容量下降,为什么...
  8. SlideShare:大话SSD (淘宝核心系统数据库组 褚霸)
  9. 小技巧(11):使用PS更换证件照背景颜色(蓝色背景色换成白色背景色)
  10. js需要删除页面中某个元素