首页 > 代码库 > Linux 中连接超时的另外一种实现
Linux 中连接超时的另外一种实现
我之前的实现方式都是使用非阻塞的socket , 其实对于阻塞的socket 有另外一种实现方式,那就是使用 alarm(闹钟) , 进入连接前设置设置个超时
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 中连接超时的另外一种实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。