社区
Linux/Unix社区
帖子详情
在使用select() 函数时 怎样判断套接字连接状态(断开或连接)????
奔跑吧猴哥
2005-10-12 10:43:04
在使用select() 函数时 怎样判断套接字连接状态(断开或连接)????
...全文
3968
22
打赏
收藏
在使用select() 函数时 怎样判断套接字连接状态(断开或连接)????
在使用select() 函数时 怎样判断套接字连接状态(断开或连接)????
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cky41
2005-12-12
打赏
举报
回复
远程主机主动断开,select监视的socket马上会进入可读状态,然后会读到EOF(文件结束符)
如果是网线被拔(远程或是本地),哪只能通过超时判断了吧
wjlsmail
2005-10-26
打赏
举报
回复
Mark
LDD123
2005-10-26
打赏
举报
回复
拔掉网线导致无法通讯用select是监测不出的,
可以利用两边定时发心跳包来处理
LDD123
2005-10-26
打赏
举报
回复
如果FD_SET中的socket有数据或被断开的,会触发FD_SET中对应的读事件,
select会立刻返回,这时对这个socket进行recv,根据返回值是>0 =0就可
以判断是有数据还是连接被断开。
很土
2005-10-26
打赏
举报
回复
使用 select 函数后, 若是 Read 的 FDSet, 通过 FD_ISSET 判断是否收到信号, 若有信号则可以使用 recv(fd, @ch, 1, MSG_PEEK), 若接收尺寸为 0 则可以调用 close 关闭 socket
lirun
2005-10-21
打赏
举报
回复
异常中断,只能等待select超时,建议你使用send,recv函数族。
wohow
2005-10-13
打赏
举报
回复
有经验的人一看就知道你是怎么试的,可是你的测试涵盖多少环境?我只要举出一个反例就推翻你的结论,很遗憾,这个反例被我找到了。
奔跑吧猴哥
2005-10-12
打赏
举报
回复
TCP协义有判断超时的功能..在Windows下就有FD_CLOSE通知...
不知UNIX怎么处理????????
wohow
2005-10-12
打赏
举报
回复
单纯select函数做不到的。例如TCP连接上之后调用select,可是对方拔掉网线,select就监测不到。可以配合send试试。
奔跑吧猴哥
2005-10-12
打赏
举报
回复
回复人: tengulre(OpenSource) ( ) 信誉:100 2005-10-12 11:01:00 得分: 0
判断socket句柄是否大于0
----------------------------------------------------
socket句柄 在连接时就获得,怎么会改变呢???
yeehya
2005-10-12
打赏
举报
回复
判断是否连接正常,可以用一次通讯来测试,专门发送一个特定的包,等待一个特定的应答,只能这样老土吧.
yeehya
2005-10-12
打赏
举报
回复
faint,这个可以由自己定义的通讯协议来实现啊~
接受特定的命令类型,在client上在建立和退出时,发出相应的命令.如果是异常中断,只能通过超时来判断了吧.
是新手,能说的只有这些.
tengulre
2005-10-12
打赏
举报
回复
判断socket句柄是否大于0
奔跑吧猴哥
2005-10-12
打赏
举报
回复
难道没有高手???
chaolajiao
2005-10-12
打赏
举报
回复
vipiii 老兄, 你的方法很有效!
进来领分吧!!!!
http://community.csdn.net/Expert/topic/4322/4322297.xml?temp=8.353823E-02
vipiii
2005-10-12
打赏
举报
回复
to chaolajiao: 用strerror(errno)输出具体原因
^_^,wohow同志缺乏幽默感,就算我试错了,难道我不可以回这帖子么?
就算我不知道select的运行机制,难道我不可以回这帖子么?呵呵~
chaolajiao
2005-10-12
打赏
举报
回复
vipiii 真搞笑.
大家看看我的问题吧?
http://community.csdn.net/Expert/topic/4322/4322297.xml?temp=.993664 unix 下的socket 函数调用失败会写 errno. 哪位有 errno 的值 和 其对应意义 的 对照表???
vipiii
2005-10-12
打赏
举报
回复
很遗憾,我试过。
wohow
2005-10-12
打赏
举报
回复
vipiii(vipiii)有没有试过就说?知不知道select的运行机制?
vipiii
2005-10-12
打赏
举报
回复
对端断开时select会返回,有描述符可读。
这时read或recv会读到0字节。
要考虑超时和被中断的情况。
加载更多回复(2)
一、初识springboot之快速搭建
简介 SpringBoot主要优点: 本章目的 系统要求 开始构建项目
使用
SPRING INITIALIZR构建
使用
IntelliJ IDEA构建 简介 对spring框架盛行了多年的java方向开发人员来说,每个人java开发已经把spring框架当做开发中不可或缺的一部分。之前传统的模式都是以applicationContext.xml配置文件的形式存在...
初识SpringBoot,Mavern之环境搭建
什么是SpringBoot?Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架
使用
了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot 致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。为什么
使用
Spring
springboot学习: 初识Spring Boot框架,搭建第一个项目!
项目创建 初次接触,我们先来看看如何创建一个Spring Boot项目,这里以IntelliJ IDEA为例,其他的IDE工具小伙伴们自行搜索创建方式: 首先创建一个项目,创建
时
选择Spring Initializr,然后Next,如下图: 填写项目信息,如下图: 填写项目
使用
到的技术,上面的Spring Boot版本建议选择最新的稳定版,下面勾选上Web就
springboot学习(一) 初识,环境搭建,helloWrold
越来越火的springboot ,看介绍是一个用于轻量级的开发应用,主要是方便。所以尝试着学习。 网上关于springboot 的介绍大多是基于maven项目的,故,重温了一下maven项目环境的搭建。 我用的是myeclipse,已经集成了maven插件,那么需要做的几件事情,第一,搭建maven,springboot支持3.1+以上版本的maven,网上下载,解压即可,然后重点是,需要将ma
七、Spring Boot:初识与项目搭建
Spring Boot 通过“约定优于配置”的理念,极大地简化了 Spring 应用的开发过程。通过 Spring Initializr,我们可以快速生成项目骨架代码,而项目的结构和配置文件则为开发者提供了灵活的配置选项。本文通过一个简单的示例演示了如何创建和运行一个 Spring Boot 应用,希望这些内容能帮助你更好地理解和
使用
Spring Boot。如果你对 Spring Boot 有更多问题,或者需要进一步的示例代码,欢迎随
时
交流!
Linux/Unix社区
23,224
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章