因为工作原因,想学习一下编程,最近在学习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. TexturePacker基本使用

    生成后

  2. msvc去除控制台窗口的编译指令

    #pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")

  3. SQLSERVER 根据一个库的视图在另一个库中生成一张表

    select * into VPsiOuntStockBill from [KshDbPro].dbo.VPsiOuntStockBill

  4. 【ESP32学习】CMake学习

    在之前的博客中提到,ESP-IDF采用的是CMake来构建项目,因此需要学习一下CMake,以对ESP32的开发有更好的把握 参考: Windows下CMake安装教程 从零开始详细介绍CMake C ...

  5. linux改变用户属主

    将test文件的属主改为root:sudo chown root test 改变所在组:sudo chgrp root test 同时改变属主和所在组:sudo chown root.root tes ...

  6. CSS3-transform缩放

    缩放:transform:scale(倍数); 实现hover的时候加载播放图标,具体效果如下: 首先需要创建一个大盒子,盒子上面部分用一个div来呈放图片,下面部分直接书写文字.观察发现播放图标是存 ...

  7. mqtt的使用

    1.mqttws31.js /******************************************************************************* * Cop ...

  8. 将Vue项目部署到Nginx中,出现的400,405,200响应空等问题处理

    最近用Vue3写了个项目,然后对接后台接口. 在本地vue配置文件中,配置了反向代理.成功请求了后端接口. 自测没有问题. 打包vue,发布到nginx中.运行nginx,成功显示了页面. 当点击页面 ...

  9. unable to access 'http://*****/': The requested URL returned error: 414

    git拉取gitlab项目: unable to access 'http://git.yijiago.com/meimeng/lsyjg_java.git/': The requested URL ...

  10. ICMP-ping报错类型

    ICMP数据包的包头,两个重要字段Type和Code,如图所示 ICMP消息类型和编码类型 回显请求包,正常为80 回显回复包,正常为00 其余均为报错类型. 超时:对方主机不在线.屏蔽等 传输失败: ...