因为工作原因,想学习一下编程,最近在学习Qt相关的知识,学到了TCP/IP这里,跟着视频做了一个简单的C/S的小例程.例程中没有关于连接状态的判断.经过修改,可是没能达到我要的效果,在百度上进行搜索,也没有找到关于这种,CSDN中也都是讲解,如果判断与网络的连接状态,于是我重新进行了思考:

  在Server端,当我进行断开连接的操作时,可以显示出与客户端连接与断开,但是,如果我在服务端进行断开连接的操作,那么在客户端却显示不出来.再查看QtTCP通信过程的模型图

  服务端的流程是:首先启动监听 QTcpServer, listen.然后创建通信套接字QTcpSocket,如果与客户端连接成功,那么服务器端就会触发newConnection(),取出建立好的通信套接字,如果有数据,并发送成功,对方的通信套接字,会触发readyRead()

  在客户端,只会用到通信套接字QTcpSocket,首先建立通信套接字,启动连接connectToHost(),如果成功和对方建立好连接,通信套接字会自动触发connected(),如果对方主动断开连接,通信套接字会自动触发disconnected()通过通信套接字的Write(),将数据发送给服务端.

重新理解了一遍流程,那么开始动手修改代码:

1)首先在服务端的窗口事件&QTcpSocket::readyRead,信号的Lamda表达式中,增加&QTcpSocket::disconnected,信号的判断,确定是否与客户端断开连接.

2)在客户端的窗口事件中对&QTcpSocket::disconnected信号进行判断,是否与服务器断开连接.

3)那么如果防止重复点击连接呢?

可以增加一个私有变量conn_sata,初始值为0,表示未连接,以此做为连接状打态,在客户端的窗口事件的QTcpSocket::connected信号进行判断,收到此信号,说明已经连接成功,此时将状态conn_sata的值为1.经过修改后,已经基本实现我想要的效果.

初学TCP的一些感想的更多相关文章

  1. 动手学TCP——CS144实验感想

    在Stanford CS144的课程实验Lab0~Lab4中,我们动手实现了一个自己的TCP协议,并且能够真的与互联网通信!此外,感谢Stanford开源本实验并提供了大量的优质测试用例,使得我们仅仅 ...

  2. TCP/IP之四书五经[转自2003.12程序员]

    TCP/IP协议是当前广域网和局域网通用的网络协议,因此,基于TCP/IP的编程就格外重要.从应用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了,各种现成的框架( ...

  3. TCP/IP的经典网络编程

                                                                             TCP/IP网络编程之四书五经             ...

  4. TCP/IP详解卷1 - wireshark抓包分析

    TCP/IP详解卷1 - 系列文 TCP/IP详解卷1 - 思维导图(1) TCP/IP详解卷1 - wireshark抓包分析 引言 在初学TCP/IP协议时,会觉得协议是一种很抽象的东西,通过wi ...

  5. TCP随笔

    目录 前言 正文 time_wait和rst fin与连接关闭 nagel和ack延迟算法 滑动窗口与拥塞控制 文末 总结 测试代码 前言 网上已经有大量关于tcp的文章,感觉作为一名技术人员,不写一 ...

  6. windows类书的学习心得(转载)

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  7. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  8. 初学acm感想

    初学acm,觉得大部分题对我来说都是陌生的,好多类型没见过,好多题没思路,打击确实不小,或许这个阶段正是比较能考验人的时候吧,因为只有坚持下来才有收获,没有人生下来就是大神,所以不能气馁更不能放弃,有 ...

  9. 初学C的感想

    既然是随笔,那就让我谈谈或者说聊聊自己的感想吧.刚刚进入大学的时候,对物联网工程这个专业挺迷茫的,至少我不知道自己将要学什么,只知道高数和英语是一定要学的,后来听学长说要学C语言,对这个概念很陌生,有 ...

  10. 201671010147 2017年8月27号 初学java的感想

    在IT行业中,java无疑是最热门的,很多企业也青睐java,因为他的扩展性好,可以处理更多客户的数据,正是因为java有前景所以才吸引更多人去学习.在大一我们已经接触vhleC语言,大二开始就解除了 ...

随机推荐

  1. H5在(支付宝和微信环境)使用支付

    首先是在支付宝浏览器环境   使用支付宝支付 参考链接 https://myjsapi.alipay.com/jsapi/native/trade-pay.html 支付宝订单字符串唤起支付  调用支 ...

  2. 2020ICPC沈阳I - Rise of Shadows

    剩余系 Problem - I - Codeforces 题意 给定 \(H,M,A\) \(2<=H,M<=10^9,\;0<=A<=\frac {H*M}2\) 假设一个钟 ...

  3. SHR常用f7[更新ing]

    <field id="unit" name="unit" label="单位" dataType="F7" uip ...

  4. warmup --攻防世界

    题目: (1)有一张图片和一个压缩包 发现压缩包里面有一张相同的图片,应该是已知明文攻击(相同的CRC) (2)使用软件爆破 虽然没能得到密码,手动中断后得到新的压缩包,发现里面的图片已经解密. (3 ...

  5. python写入sqlserver中文乱码问题

    需求是python3开发,数据库是sqlserver,第一次用python操作sqlserver,写入数据时,中文全部变成了?? 试了pyodbc,但缺少sqlserver驱动 试了sqlStr.en ...

  6. 什么叫IOCSABS呢

    所谓的IOCSABS,就是全新的管理技术,是结合客户端管理与网络平台管理为一体的创新观念及技术,     IOCSABS? (what is IOCSABS?) 英文的全称为Integrated Of ...

  7. 使用端口排查解决启动Tomcat端口被占问题

    有时候在eclipse中启动Tomcat或启动纯净版的Tomcat会出现端口被占的问题,下面菜鸟小编带大家进行端口排查解决问题.(下面假设是我的80端口被占了,如果你不知道你的Tomcat端口是多少就 ...

  8. 32 项目结构 & 事务 & Logging日志

    1 项目结构 以下主要是以drf编写api时的结构为示例. 1.1 APP结构 1.1.1 单APP 例如:订单系统 1.1.2 Base + 业务APP 例如:供应链系统 1.1.3 独立的APP ...

  9. Mybatis框架中 collection 标签 和 association标签中关于 columnPrefix 属性的底层逻辑

    columnPrefix的作用是给column自动拼接上前缀, 已知多重嵌套的collection 和 association的columnPrefix属性的值是会叠加的 <associatio ...

  10. CAJ转换为PDF

    方法就是下载一个CAJViewer和一个PDF虚拟打印机 CAJViewer下载: http://cajviewer.cnki.net/ 我下载了7.2版本 PDF虚拟打印机可以是Adobe acro ...