Qt QAbstractSocket::isValid()
最近使用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()相关推荐
- Qt 可编辑的树模型(Tree Model)的一个实例
本实例来自Qt 官方的一个实例(Editable Tree Model Example) 简介: 本实例是关于怎样基于模式视图框架下的 树模型的实现. 该模型支持可编辑的表单项,自定义表头,删除插入行 ...
- Qt 快速入门学习笔记
Qt 快速入门学习笔记 环境安装 环境配置以及安装 安装包下载地址 1.windows安装 msvc编译器模块需要安装Windows软件开发工具包. MinGW是Windows平台使用GNU工具导入库 ...
- Qt中的网络编程(TCP)
在Qt中网络编程主要由Qt Network模块来编写基于TCP/Ip的网络程序,其中提供了许多的类: 可以点击该链接查看:Qt网络C++类|Qt网络 5.15.12 常见的有: QTcpServer ...
- Qt实现telnet服务【记录】
最近在做关于FlightGear的一个指令控制的研究,由于每次都需要手动从cmd跳到telnet中,所以实现拿Qt实现一个telnet功能的小模块. 目录 FlightGear(开源) 源码 项目结构 ...
- Qt QLocalSocket 进程间通信
简述 QIODevice 做为QLocalSocket的父类,我们先做一下简单的介绍 QIODevice类是Qt中所有输入/输出设备的基本接口类. QIODevice为支持读取和写入数据块的设备提供了 ...
- 【正点原子Linux连载】第十一章 网络编程 摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2
1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...
- QT 网络聊天室设计实验报告
一.实验目的与要求 (1)了解QT Network模块基本知识 (2)掌握网络访问接口的方法 (3)熟悉获取网络接口信息的方法 二.实验内容与安排方式 (1)了解QT Network模块基本知识 (2 ...
- Qt CS架构 客户端代码编写技巧 QTcpSocket
QT网络编程解说 QTcpSocket网络编程细节 这里是更新版本的 Qt 网络编程解说 QT网络编程解说 很多人在编写网络代码的时候,客户端代码编写的功能总不能胜任所需要的功能能力,现在我将编写网络 ...
- linux+Qt 下利用D-Bus进行进程间高效通信的三种方式
linux+Qt 下利用D-Bus进行进程间高效通信的三种方式 原文链接: https://www.cnblogs.com/wwang/archive/2010/10/27/1862552.html ...
- qt 拖拽 修改大小(二)
最近项目需要实现windows下橡皮筋的效果,所以对此做了一些了解,特此记录. 首先windows系统是支持橡皮筋效果的,需要使用win32方 法:SystemParametersInfo(SPI_S ...
最新文章
- Compressor detection can only be called on some ……
- DFT的准备(一)(对离散序列的傅里叶分析大总结)
- jQuery对象和DOM对象互转的问题、jQuery文件引入问题、DOM版本的网页开关灯
- Bumblebee微服务网关之consul服务发现
- 梦聆轻量化音乐播放器源码
- CCNP-17 OSPF试验13(BSCI)
- [模板]匈牙利算法(二分图匹配)
- ElasticSearch5.0——IK词库加载
- Oracle oci.dll下载地址
- 联想·云计算中心运维服务(1+X中级)教材出版
- Qt开发经验小技巧196-200
- Matlab安装 解决error114
- 如何破解zip压缩文件的密码问题?
- 简简单单几行Python代码就能暴力破解网站登录密码,真有这么强吗?
- 「3D视觉技术交流群」精华帖与关键问题
- PHP 垃圾回收机制
- FPGA的进阶项目——开源示波器
- [uboot]MLO和uboot-spl.bin, uboot.img和uboot.bin
- 使用 OpenWhisk 自建 Serverless 服务
- 图形界限命令在命令行输入_设置图形界限的命令为在命令行输入