如何判断客户端与服务器断开连接?求助

一魅 2013-10-17 11:35:28
我用TCP协议编写了一个服务器和客户端(阻塞模式),其中服务器不停的向客户端发送信息,请问如果强行关闭客户端,那么服务器如何才能及时的知道此时已断开连接呢?
...全文
686 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
一魅 2013-10-31
  • 打赏
  • 举报
回复
引用 4 楼 boylafong 的回复:
我以前做过这个,我们是视频传输解决中断的问题. 定义一个局部变量 int a 每次收到数据把a置为0 起一个时钟(1000毫秒运行一次),每次a++,当a>3的时候我们就认为视频断开了 因为每次收到数据a都为0了,那么当有数据的时候,视频不会认为断开,当视频断开或者收不到数据的时候,a就会一直加,加到3的时候(3秒钟后)那么肯定是收不到数据了. 这样做是为了减少数据流量.客户端跟服务器都是如此.
您的这个方法好,呵呵,我试试看,谢谢了
一魅 2013-10-31
  • 打赏
  • 举报
回复
引用 3 楼 dingxz105090 的回复:
引用 2 楼 YI_MQ 的回复:
[quote=引用 1 楼 dingxz105090 的回复:] 设定客户端每次在收到服务端的指令时自动回一个特定消息用来判断连接状态(比如"Yes Madam"),那假如客户端连续3次都没回的话就断了?
那如果客户端连服务器的指令都接收不到呢?这个时候不就没法继续下一步了?求解答 谢谢了
客户端连服务器的指令都接收不到那就更没法回给你服务器了,那就更应该说明断开了[/quote] 嗯嗯,我现在就是用您说的这个方法来判断服务器和客户端是够断开连接的,效果貌似不错,我强制关闭客户端后,服务器的recv函数就会返回一个-1的值,呵呵,谢谢大侠!
凌乱哥 2013-10-17
  • 打赏
  • 举报
回复
设定客户端每次在收到服务端的指令时自动回一个特定消息用来判断连接状态(比如"Yes Madam"),那假如客户端连续3次都没回的话就断了?
boylafong 2013-10-17
  • 打赏
  • 举报
回复
我以前做过这个,我们是视频传输解决中断的问题. 定义一个局部变量 int a 每次收到数据把a置为0 起一个时钟(1000毫秒运行一次),每次a++,当a>3的时候我们就认为视频断开了 因为每次收到数据a都为0了,那么当有数据的时候,视频不会认为断开,当视频断开或者收不到数据的时候,a就会一直加,加到3的时候(3秒钟后)那么肯定是收不到数据了. 这样做是为了减少数据流量.客户端跟服务器都是如此.
凌乱哥 2013-10-17
  • 打赏
  • 举报
回复
引用 2 楼 YI_MQ 的回复:
引用 1 楼 dingxz105090 的回复:
设定客户端每次在收到服务端的指令时自动回一个特定消息用来判断连接状态(比如"Yes Madam"),那假如客户端连续3次都没回的话就断了?
那如果客户端连服务器的指令都接收不到呢?这个时候不就没法继续下一步了?求解答 谢谢了
客户端连服务器的指令都接收不到那就更没法回给你服务器了,那就更应该说明断开了
一魅 2013-10-17
  • 打赏
  • 举报
回复
引用 1 楼 dingxz105090 的回复:
设定客户端每次在收到服务端的指令时自动回一个特定消息用来判断连接状态(比如"Yes Madam"),那假如客户端连续3次都没回的话就断了?
那如果客户端连服务器的指令都接收不到呢?这个时候不就没法继续下一步了?求解答 谢谢了

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧