Linux 中连接超时的另外一种实现
2014-10-24 15:33
281 查看
我之前的实现方式都是使用非阻塞的socket , 其实对于阻塞的socket 有另外一种实现方式,那就是使用 alarm(闹钟) , 进入连接前设置设置个超时
然后进入连接,
如果超时了,进程就会收到 SIGALRM 信号,程序的流程走到 SIGALRM 的信号处理函数 timeout 中
此时 connect 函数会被信号打断退出 此时判断下 to 变量 就知道是不是超时了
voidset_timeout(int n) { to = 0; alarm(n); signal(SIGALRM, timeout); }
然后进入连接,
y = connect(sock, (struct sockaddr *) &cli, sizeof(cli));
如果超时了,进程就会收到 SIGALRM 信号,程序的流程走到 SIGALRM 的信号处理函数 timeout 中
voidtimeout(int n) { to = 1; alarm(0); }
此时 connect 函数会被信号打断退出 此时判断下 to 变量 就知道是不是超时了
if (to) { printe("connect: Timed out\n"); continue; }
相关文章推荐
- Linux下Socket连接超时的一种实现方法(转载)
- Linux下Socket连接超时的一种实现方法
- Linux下Socket连接超时的一种实现方法
- Linux下Socket连接超时的一种实现方法
- Linux下Socket连接超时的一种实现方法
- Linux下Socket连接超时的两种实现方法 setsockopt
- Linux下Socket连接超时的一种实现方法
- Linux检测TCP连接断开的一种简单实现方法
- Linux检测TCP连接断开的一种简单实现方法
- linux socket编程实现connect超时的一种方法(非阻塞)
- Linux检测TCP连接断开的一种简单实现方法http://blog.csdn.net/wtewrw/article/details/6547380
- [转]如何实现Windows远程连接Linux操作系统
- Linux下mysql 5.x得到root密码后的另外一种利用方式
- linux connect 设置连接超时
- 用户界面的另外一种实现方案(1)我们要做什么
- 用vnc实现windows远程连接linux桌面
- 一种利用线程池线程执行任务, 并能够结束超时任务的方法 (.NET实现)
- SecureCRT 连接Vmware虚拟机上的Linux 超时问题
- 用户界面的另外一种实现方案(2)现有的方案
- 点击连接如果连接打不开跳转到另外一个页面的实现