社区
系统维护与使用区
帖子详情
问connect系统调用能否显式设置超时(Solaris平台)
Mr.Osc
2002-09-25 11:39:56
当socket工作在阻塞模式时,如果目标地址存在问题,connect就会阻塞,能否通过函数或是系统调用显式设置这个超时时间,请各位指教。
...全文
138
8
打赏
收藏
问connect系统调用能否显式设置超时(Solaris平台)
当socket工作在阻塞模式时,如果目标地址存在问题,connect就会阻塞,能否通过函数或是系统调用显式设置这个超时时间,请各位指教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Mr.Osc
2002-09-27
打赏
举报
回复
To:13312933476(南国浪子)
嗯,select确实无法判断,我后来为了解决这个问题采用了一种比较笨拙的方法,当select返回的时候,是可以判断IP地址是无法获得的,但是就存在两种情况,一种是完全正确,一种是端口错误,这时再次调用connect就会得到正确的errno,我虽然测试,但并没有从理论上进行验证。
如果大家没有更好的建议就结帖了。
solar
2002-09-25
打赏
举报
回复
setsockopt can not set timeout on most of unix platform including solaris
13312933476
2002-09-25
打赏
举报
回复
select函数的超时功能其实就是起一个定时器的作用!!!
当connect阻塞时,在其定时内connect如果没有返回,select函数就将中断其阻塞.至于当"目的ip地址正确但目标端口不正确"的情况,的确select是不能判断的!!!
Mr.Osc
2002-09-25
打赏
举报
回复
各位推荐我用setsockopt的兄弟,我知道setsockopt可以设置发送超时和接收超时,但对于connect系统调用使用那个参数我确实不知道,请知道的兄弟不吝赐教。
To:13312933476(南国浪子)
谢谢浪子兄,关于你说的信号控制的方法我知道是可行的,在这里我说说我的解决方案,大家讨论一下是否可行,我选用非阻塞的socket连接,一般情况下返回-1并设置errno为EINPROGRESS,然后通过select函数监测该描述符,因为select函数可以方便地设置超时时间,但是有一种情况select也是返回的,就是当目的ip地址正确但目标端口不正确(没有监听)的时候select函数好像是不能判断,我现在只能判断到这一步。还请指教。
mr_fanwei
2002-09-25
打赏
举报
回复
推荐setsockopt()。
我用过,很管用的一个函数!
13312933476
2002-09-25
打赏
举报
回复
alarm(5)中改为:TIME_OUT .
13312933476
2002-09-25
打赏
举报
回复
可以!!!!
先设置:
#define TIME_OUT 你需要的超时时间
再写一个超时函数如下:
void Timeout(int sig)
{
signal(sig,SIG_IGN);
longjmp(TimeoutEnv,1);
}
接着:
if (setjmp(TimeoutEnv) == 0)
{
signal(SIGALRM,Timeout);
alarm(5);
if(connect(...................)<0)
你就可以结局超时阻塞!!!!
然后:
DANIELIU
2002-09-25
打赏
举报
回复
应该可以,试试setsockopt()和getsockopt(),用法可以man一下。
运行于
solaris
平台
下的Socket连接
solaris
平台
下的socket连接源码
Oracle
Solaris
9 - man pages section 3: Networking Library Funct
Oracle
Solaris
9 - man pages section 3: Networking Library Functions-746
Fast Portable non-blocking network programming with Libevent
从书籍的github网站下载,并将其编译成html,然后手工在word中编辑,并转为pdf,格式很规范和完整,完美再现网页的效果。
C事件驱动循环的网络IO编程框架源代码.rar
C事件驱动循环的网络IO编程框架源代码.rar
测试培训教材
测试管理与QualityCenter培训手册 1、测试流程管理、测试度量方法 按照尽早进行测试的原则,测试人员应该在需求阶段就介入,并贯穿软件开发的全过程。就测试过程本身而言,应该包含以s下几个阶段。 -测试需求的分析和确定。 -测试计划。 -测试设计。 -测试执行。 -测试记录和缺陷跟踪。 -回归测试。 -测试总结和报告。 一个好的测试管理工具应该能把以上几个阶段都管理起来。 测试人员每时每刻都在度量别人的工作成果,而测试人员的工作成果又由谁来度量呢?度量的标准和依据是什么呢?软件测试的度量是测试管理必须仔细思考的
问
题。缺乏尺度会让测试失去平衡,缺乏标准会让测试工作难以衡量。 2、如何搭建测试管理
平台
? 首要
问
题是流程的规范化。 (1) 测试进入和退出标准。 (2) 协作流程。 (3) 缺陷跟踪管理流程。 (4) 工具
平台
的引入。 目前主流测试管理
平台
与缺陷跟踪工具: 3、QC(Quality Center)介绍 QC标准测试管理流程 QC支持的应用服务器:Jboss、WebLogic、WebSphere QC支持的数据库:Oracle、SQLServer QC支持的操作
系统
:Windows、Linux、
Solaris
支持群集: 服务器端硬件和数据库要求: Windows: Linux:
Solaris
: 客户端
系统
要求: 练习1:安装QC 详见《Mercury Quality Center 9.0 Installation Guide》 Win2003+SQLServerSp4+QC9.0安装示例 1、安装Windows Server 2003 Enterprise Edition、安装IIS邮件服务器 2、安装SQL Server 2000、打上补丁Sp4 安装好SQL Server 2000后注意启动SQLServer服务器 3、安装QC9.0 服务器名称也可以是IP地址 4、启动QC9.0 5、QC9.0安装
问
题解决 - JBOSS启动不了 原因:8080端口被其他应用程序占用。 用netstat查看谁占用了8080端口 netstat -ano 解决办法1:修改其他程序的端口使用 解决办法2:修改JBOSS的启动端口 JBOSS_HOME\server\default\deploy\jbossweb-tomcat55.sar\server.xml 6、修改IP地址后不能登录QC 解决办法: 在C:\Program Files\Mercury\Quality Center\jboss\server\default\deploy目录下找到10sabin.war 进入10sabin.war\WEB-INF,修改siteadmin.xml中的IP地址: 修改数据库中的数据: 修改后可以登陆 但是还需要修改以前Project的数据库连接属性 否则会提示错误 然后还要修改 C:\Program Files\Mercury\Quality Center\repository\qc中的dbcon.txt: qcsiteadmin_db@192.168.1.12.1433. 还有 C:\Program Files\Mercury\Quality Center\repository\qc\Default\QualityCenter_Demo_db中的dbid.xml 192.168.1.12 7、Mercury Tours 样例程序 启动:http://192.168.1.2:8080/mtours 注意安装JVM才能“View Calendar” 4、创建和定义测试需求、测试需求管理、跟踪 定义需求 1、查看需求 视图->需求树 2、添加需求 需求->新建需求 输入以下内容 3、添加子需求项 查看需求 ZooIn : CTRL + I ZooOut : CTRL + O 视图->编号 视图->需求网格 视图->筛选/排序->
设置
筛选器/排序
设置
排序字段
设置
过滤条件 修改需求 拷贝需求项Cruise Reservation 重命名需求项Cruise Reservation_Copy_1为Hotel Reservation 移动需求项
系统维护与使用区
19,614
社区成员
74,562
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章