社区
Qt
帖子详情
qtcpsocket致命问题
zhenimei100
2017-09-29 04:41:04
1、qt4
2、创建一个qtcpserver,这个服务只做一件事情,有连接过来立刻close新建的连接。
3、创建一个qtcpsocket,这个客户端做两件事情:一是连接服务器,连接成功发送一条报文给服务器;二是收到disconnect信号后,会去重连。
大家可以自己去实现上面的功能。我实际测试下来得到一个结论:客户端不知道服务器已经断开了,还去发送数据,会导致程序崩溃。
请问怎么解决?
...全文
1207
5
打赏
收藏
qtcpsocket致命问题
1、qt4 2、创建一个qtcpserver,这个服务只做一件事情,有连接过来立刻close新建的连接。 3、创建一个qtcpsocket,这个客户端做两件事情:一是连接服务器,连接成功发送一条报文给服务器;二是收到disconnect信号后,会去重连。 大家可以自己去实现上面的功能。我实际测试下来得到一个结论:客户端不知道服务器已经断开了,还去发送数据,会导致程序崩溃。 请问怎么解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
橙儿稻香
2017-10-09
打赏
举报
回复
抱歉 我手边没有你说的例子 网上应该很多blog都有 主要发生这个问题是我测试的时候测出的一个bug 然后给解决的 再告诉你我的思路 没有真的很抱歉
橙儿稻香
2017-10-09
打赏
举报
回复
兄弟 我不知道为什么你提的需求那么奇怪。。。 如果只是检验网络不通发送数据引发的崩溃没必要这么搞。。 我用的是第一种方法。。 即当连接成功触发SIGNAL(connected())信号的时候 你写个信号槽 做一个标记flag为true 在代码写之前加一个判断是否为true就好了 你阻塞不行我估计的你客户端有重连。。。然后服务器又close掉 计算机的时间比延迟的时间短太多了。。级别都不一样
zhenimei100
2017-10-09
打赏
举报
回复
我的邮箱是:550494597@qq.com
zhenimei100
2017-10-09
打赏
举报
回复
十分感谢你的回复,阻塞方式我也测试过,还是有问题的。 可能是我写的代码有问题,不知道能否传我一个简单的服务器和客户端通信的代码。
橙儿稻香
2017-09-30
打赏
举报
回复
这个我已经解决了。 首先是连接成功会有个connected() 信号被触发, 然后就可以写要触发的函数里面添加Write connect(this->SMUTcpSocket,SIGNAL(connected()),this,SLOT(on_conn())); //write在 on_conn()里面发送 保证网络是联通的 第二个方法是用阻塞式通信方式 就是添加一个waitForBytesWritten() 等待数据写入,如果超时了就不发送了。 waitForConnected() 等待链接的建立 waitForReadyRead() 等待新数据的到来 waitForBytesWritten() 等待数据写入socket waitForDisconnected() 等待链接断开 QTcpSocket tmpSock; char* buf ="hello"; tcpSock.connectToHost("59.64.159.87",7716); tcpSock.write(buf,strlen(buf)+1); if(tcpSock.waitforreadyread(3000)) emit SockCondition("successful"); else emit SockCondition("failed"); tcpSock.disconnect();
QT
cp
Server和
QT
cp
Socket
使用详解
【
Qt
服务器与多线程使用】 ~~~~~~~~
QT
cp
Server
致命
缺点就是单线程!!要想实现多线程则需要继承该类之后重写incomingConnection函数,在该函数中将
socket
Descripto...
VS
QT
调试过程遇到的一些
问题
及解决方案
VS
QT
调试过程遇到的一些
问题
及解决方案 1、使用std::numeric_limits::max()时出现错误 解决方案:用括号()将std::numeric_limits::max括起来,避免与其他头文件中定义的max()宏混淆。 2、使用PCLVisualizer显示可视化点云时,弹出vtkOutputWindow窗口,提示"Generic Warning"等信息 解决方案: 第一步:在工程的main.
cp
p文件中添加头文件,#include<vtkOutputWindow.h> 第
QT
中编译时出现main.
cp
p: No such file or directory
当时出现这个
问题
时找了很久,只的有人说可能是路径中包含了中文,但是我真的没有,最后做了简单的设置就可以了,设置如下: 在win7(我用的是win7)中将系统环境变量PATH设置为“C:/mingw/bin”(我的mingw放在了系统C盘中)
Socket
的速率控制
本文实现了较为精确的
socket
数据源
Linux或Windows下判断
socket
连接状态
场景:客户端程序需要实时知道和服务器的连接状态。比较通用的做法应用层是采用心跳机制,每隔一端时间发送心跳能回复说明服务器正常。实际应用场景中,服务端和客户端并不是一家厂商的,比如说笔者这种情况,服务端是其他厂商,应用层协议没有心跳机制,客户端显示的连接状态需要客户端自己处理。笔者最开始使用的
QT
cp
Socket
进行
socket
连接,在客户端程序监听下面3个信息。
Qt
16,212
社区成员
26,592
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章