社区
Qt
帖子详情
qtcpsocket致命问题
zhenimei100
2017-09-29 04:41:04
1、qt4
2、创建一个qtcpserver,这个服务只做一件事情,有连接过来立刻close新建的连接。
3、创建一个qtcpsocket,这个客户端做两件事情:一是连接服务器,连接成功发送一条报文给服务器;二是收到disconnect信号后,会去重连。
大家可以自己去实现上面的功能。我实际测试下来得到一个结论:客户端不知道服务器已经断开了,还去发送数据,会导致程序崩溃。
请问怎么解决?
...全文
1204
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
网络高级编程、
Qt
框架、
Qt
5 C++网络编程
Qt
框架是由
Qt
Company开发的全球主流跨平台C++界面应用程序开发框架、是跨平台项目的主流解决方案。
Qt
5 框架是高效的C++框架,容易扩展,并且允许真正地组件编程,既可以开发GUI程序,也可用于控制台工具和服务器。本课程主要帮助学员熟练掌握
Qt
5网络编程,T
CP
、UDP网络通讯协议编程,并且通过每节课的案例项目,帮助学员掌握
QT
cp
Server、
QT
cp
Socket
、QUdp
Socket
类的相关使用以及与
QT
hread多线程的并发网络通讯! 本课程适合对
Qt
框架编程,网络高级编程感兴趣的童鞋!
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显示...
Socket
的速率控制
这种方法存在一个
致命
的
问题
,就是忙等,循环过程会占满
CP
U资源。因此需要调整一下算法,循环过程引入休眠机制,降低
CP
U占用,但是休眠机制由于操作系统调度的不确定性,会造成循环结束后的实际时间和预设时间会有...
Linux或Windows下判断
socket
连接状态
场景:客户端程序需要实时知道和服务器的连接状态。...实际应用场景中,服务端和客户端并不是一家厂商的,比如说笔者这种情况,服务端是其他...笔者最开始使用的
QT
cp
Socket
进行
socket
连接,在客户端程序监听下面3个信息。
Qt
16,173
社区成员
26,583
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章