比如对于一个Server/Client程序,Client会每隔一定时间(比如TIME_OUT_CLIENT)会向Server发送“CheckConnect”信息,Server收到这个信息会调用回调函数__recv_check_connect()

这个是否可以再__recv_check_connect()里面alarm一个TIME_OUT_SERVER时间,当这个时间到了的时候,linux内核会发送一个signal (SIGALRM)给本进程。

注意: TIME_OUT_SERVER > TIME_OUT_CLIENT

这样子,每次在TIME_OUT_CLIENT时间结束后,又重新signal了一个TIME_OUT_SERVER时间,所以如果网络一直没有断开的话,本进程是不会接收到signal (SIGALRM)的。

如果接收到了signal (SIGALRM),那就表示在TIME_OUT_CLIENT时间内,Server没有收到"CheckConnect"或者Client压根就没有发。这个时候Server可以选择退出关闭资源等操作。

static void __disconnect_timeout_cb(int sig)
{//*** means already disconnect with client***//close socket and resource//finish process
}static void __recv_check_connect()
{//when recieve "CheckConnect" info will call the callback
    alarm(TIME_OUT_SERVER);
}void main()
{//main code
    signal(SIGALRM, __disconnect_timeout_cb);
}

alarm系统调用参考信息

http://blog.163.com/t_gf/blog/static/30682476200992254918727/

转载于:https://www.cnblogs.com/soaringEveryday/p/3748204.html

运用alarm系统调用检测网络是否断开相关推荐

  1. Linux的系统调用、网络连接状态、磁盘I/O;可疑行为监控/日志收集、SHELL命令执行流程

    http://man7.org/linux/man-pages/man7/capabilities.7.html http://www.cnblogs.com/LittleHann/p/3850653 ...

  2. 在C#中利用Keep-Alive处理Socket网络异常断开的方法

    最近我负责一个IM项目的开发,服务端和客户端采用TCP协议连接.服务端采用C#开发,客户端采用Delphi开发.在服务端开发中我碰到了各种各样的网络异常断开现象.在处理这些异常的时候有了一些心得,现在 ...

  3. iOS开发网络篇—Reachability检测网络状态

    前言:当应用程序需要访问网络的时候,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理.最好能监听设备的网络状态的改变,当设备网络状态连接.断开时,程序也 ...

  4. 有道词典总显示无法连接服务器,有道词典无法联网提示网络已断开该怎么办

    人们使用电脑时候最不想看到的事情之一就是上不了网了,无论是工作还是玩游戏时候都很不爽.电脑能正常上网,但是有道词典始终无法联网.这是怎么回事呢?下面一起看看! 方法步骤 1.我是win8的系统.有道词 ...

  5. socket中使用心跳来检测连接是否断开[ZT]

    检测TCP非正常断开连接 SO_KEEPALIVE 使用缺陷分析 目前手头有个关于心博功能的一个案例, 在使用SOL_SOCKET, SO_KEEPALIVE上有一点心得,想写出来和大家分享一下. 关 ...

  6. 通过Ping检测网络故障的典型次序和IPconfig命令的使用

    1.通过Ping检测网络故障的典型次序 (1)ping 127.0.0.1 这个Ping命令被送到本地计算机的IP软件,该命令永不退出该计算机.如果没有做到这一点,就表示TCP/IP的安装或运行存在某 ...

  7. android ping网络连接服务器失败,Android 中网络连接检测和使用ping检测网络是否可访问...

    Android开发中网络相关的检测包括网络是否正常连接和网络已连接但是否可以正常访问两类. (1)其中最常用的就是网络连接是否正常的检测,具体的代码如下:ConnectivityManager con ...

  8. Android 中网络连接检测和使用ping检测网络是否可访问

    Android开发中网络相关的检测包括网络是否正常连接和网络已连接但是否可以正常访问两类. (1)其中最常用的就是网络连接是否正常的检测,具体的代码如下: ConnectivityManager co ...

  9. 目标检测网络(RCNN系列,SSD,Yolo系列)

    Table of Contents 深度学习相关的目标检测方法也可以大致分为两派 发展历程 基于区域提名的R-CNN家族对比总括 R-CNN(2014) SPP-Net Fast R-CNN(2015 ...

最新文章

  1. 用Python批量实现多Excel多Sheet合并的4种方法
  2. SAP QM 检验批上各个MIC质检结果的查询报表?
  3. 期待的程序员的生活并非你想象的那么简单!
  4. 反射和动态代理实现上下文切入AOP效果
  5. ML.NET机器学习、API容器化与Azure DevOps实践(一):简介
  6. thinkphp跨库操作代码实例
  7. 探索图神经网络的网络架构和训练方法
  8. 项目中的textarea遇到的小问题
  9. mysql如何怎么进行单表的单条数据删除--根据id进行删除
  10. 西门子博途v14 SP1 S7-1200之间的以太网双边通讯(两个S7-1200 在一个项目中)
  11. vp9 prob 详细分析
  12. MariaDB的延迟开源模式及其BSL许可证介绍(一)
  13. lw计算机组成,计算机组成习题答案(清华大学出版社)
  14. 【安全测试】什么是安全测试
  15. 【读书笔记】Java并发编程的艺术
  16. H5小游戏 - 答题游戏
  17. 洛谷刷题C语言:距离函数、闰年展示、计算阶乘、猴子吃桃、培训
  18. 谈瓦克生产基地爆炸停产对中国多晶硅市场的影响
  19. 系统安全博客3-windowsserver安全加固
  20. 福布斯约稿 | 客户体验的全景分析:从了解到行动

热门文章

  1. 联机装箱问题 java_Java实现 洛谷 P1049 装箱问题
  2. 叉乘点乘混合运算公式_初中数学学不会?公式这样记,让你做题效率翻倍!
  3. LeetCode 75. Sort Colors (python一次遍历,模拟三路快排)
  4. 关于逆元的概念、用途和可行性的思考(附51nod 1013 和 51nod 1256)
  5. 从字节码层面分析==比较integer和int
  6. prfm预加载指令使用说明
  7. Vector的简单使用
  8. GetLastInputInfo 判断离开状态
  9. PX4/Pixhawk---uORB深入理解和应用
  10. px4原生源码学习三--Nuttx实时操作系统的使用