免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3271 | 回复: 1
打印 上一主题 下一主题

求助:select 问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-10 10:20 |显示全部楼层 |倒序浏览
在LINUX下建立一个套接字skfd,然后连接上SERVER,在使用select 等待套接字描述符skfd变为可读时,如果另外一个线程探测配置文件里面SERVER地址有变化,需要立即重新建立连接,我采用立即关闭现有套接字skfd,然后重新建立套接字skfd连接新的地址的方式,我想问的是:在我CLIENT端关闭skfd时,此时select正在skfd上等待,关闭后skfd后,select会立即返回吗?根据我测试的结果,好象select不会立即返回,一直会等待超时的,各位大侠能告诉我其中的原因吗?
如果我设置select的超时时间比较长,在超时之前,新的套接字skfd已经连接上了新的SERVER,此时新的SERVER给我发送信息时,我这边暂时没有反应,在select的超时返回后,居然回返回新的skfd可读,于是又可以正常的收发数据,请问这又是为什么?要知道这可是两个不同的套接字啊,虽然他们的描述符名字都是skfd,这让我想不通,这可能需要知道select()是如何实现的。
第三个问题:需要立即重新连接SERVER时,我采用立即关闭现有套接字skfd,然后重新建立套接字skfd连接新的地址的方式,这样的方法合适吗?因为此时设备最好不要中断,还有其他的模块要运行,有没有其他好的方法?

论坛徽章:
0
2 [报告]
发表于 2008-04-10 22:33 |显示全部楼层
呵呵,谢谢大家,各位的建议让我也有了点思路,明天上午再仔细的进行测试,来验证一下!
再次表示感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP