linux下socket connect 阻塞方式 阻塞时间控制
来源:互联网 发布:国家授时中心网络时间 编辑:程序博客网 时间:2024/05/20 08:44
原文 http://blog.chinaunix.net/uid-16792259-id-3064785.html
如何在linux下的c代码里面控制connect的阻塞时间。应用的背景是:linux下的c程序有两个目标IP需要connect,如果用阻塞方式,当其中一个IP不能连接的情况下,程序将阻塞在connect函数上。
本来以为用setsockopt修改个什么参数就可以搞定,结果baidu了半天也没有结果。倒是在网上搜到很多这样的解决方案:将connect方式设置为非阻塞方式,这样程序一旦执行就会马上返回,但问题是,到底有没有连接上呢,你需要等待一段时间,然后使用函数判断连接是否正常。试了下,貌似由于系统的区别,这个方法在我的linux环境下不适用,主要是后面判断是否连接上的函数不行,不管连接上或没连接上都返回一个值。
看来网上的方法也不能尽信,最后在公司前人的一段代码里面找到了解决方法,这里分享下:
- sigset(SIGALRM, u_alarm_handler);
- alarm(2);
- code = connect(socket_fd, (struct sockaddr*)&socket_st, sizeof(struct sockaddr_in));
- alarm(0);
- sigrelse(SIGALRM);
其中,处理函数可以如下定义,也可以加入更多的错误处理。
- void u_alarm_handler()
- {
- }
阅读全文
0 0
- linux下socket connect 阻塞方式 阻塞时间控制
- linux下socket connect 阻塞方式 阻塞时间控制
- linux下socket connect 阻塞方式 阻塞时间控制
- linux下socket connect 阻塞方式 阻塞时间控制
- linux下socket connect 阻塞方式 阻塞时间控制
- linux下socket connect 阻塞方式 阻塞时间控制
- linux下socket connect非阻塞与阻塞
- linux socket 非阻塞connect
- Linux下Socket通信中非阻塞connect的注意事项
- Linux下非阻塞connect
- Linux下socket阻塞、非阻塞详解
- linux-socket connect阻塞和非阻塞模式 示例
- linux 客户端 Socket 非阻塞connect编程
- linux 客户端 Socket 非阻塞connect编程
- linux客户端Socket非阻塞connect编程
- Linux 客户端 Socket 非阻塞connect编程
- linux 客户端 Socket 非阻塞connect编程
- linux客户端Socket非阻塞connect编程
- 修改jupyter notebook的默认工作目录
- char (*(*p[3])( int ))[5] 问题剖析
- sublime text3 汉化
- oracle表空间创建,表导入出,svn相关
- poj 1860 Bellman-Ford
- linux下socket connect 阻塞方式 阻塞时间控制
- 软件工程与UML图的关系
- 资源Resource通配符路径(四)
- Git命令提交代码到Gitblit本地服务器上
- 计算1*2*,,,,*5的积
- Spark之数据倾斜(一)
- UNPv13:#第1章#简介
- 分布式锁解决并发的三种实现方式
- 解决 java.io.FileNotFoundException:请求的操作无法在使用用户映射区域打开的文件上执行。