社区
系统维护与使用区
帖子详情
问connect系统调用能否显式设置超时(Solaris平台)
Mr.Osc
2002-09-25 11:39:56
当socket工作在阻塞模式时,如果目标地址存在问题,connect就会阻塞,能否通过函数或是系统调用显式设置这个超时时间,请各位指教。
...全文
146
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
常用ssh工具功能对比总结
找了很久也没有发现一个在
solaris
下面好用的ssh终端 。不过倒是发现了一些目前不错的ssh工具,虽然不能满足我的需求,但也应该可以满足很多人的需要了,总结如下。1、ssh
系统
自带的ssh就不用多说了,目前
solaris
自带的ssh支持ssh和ssh2,直连的时候使用ssh就足够了。使用方法:ssh username@hostname2、ssh-socks5-proxy-
connect
这个工具
Use Xmanager
connect
solaris
10 Xwindows
1> Firstly you need to enable xmanager for
solaris
10 . 通过cde-login服务进行管理 ps-ef|grep dtlogin 可以查看到是否启用,默认是启动了,但是无法进行连接,因为配置文件没有启用 需要更改gdm.conf文件 vi /etc/X11/gdm/gdm.conf 找到[xdmcp]这段话 将Enable=f
一个与
CONNECT
BY相关的BUG
今天遇到一个与
CONNECT
BY相关的BUG数据库版本是
solaris
8 + oracle 9204SQL> SELECT T2.ID 2 FROM Mis2_stat_all T2 3 WHERE t...
自动重启被中断的
系统
调用
solaris
中,诸如read之类的慢速
系统
调用
在被信号中断后,不会自动重启。而在linux中,是自动重启被中断的
系统
调用
的。sigaction与Signal这个wrapper函数可以解决这个
问
题。
Solaris
系统
Socket连接编程实践指南
本文还有配套的精品资源,点击获取 简介:网络编程是分布式
系统
和服务器端开发的基础。在
Solaris
操作
系统
中,开发者应熟悉Berkeley Sockets模型以实现Socket连接。本文详细解析了Socket的创建、地址结构的使用、绑定、监听、连接、接受、数据传输、关闭、错误处理以及套接字选项等关键步骤,最后介绍了并发处理和性能优化技术,旨在帮助开发者构建高效可靠的网络通信...
系统维护与使用区
19,614
社区成员
74,561
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章