社区
Linux/Unix社区
帖子详情
在使用select() 函数时 怎样判断套接字连接状态(断开或连接)????
奔跑吧猴哥
2005-10-12 10:43:04
在使用select() 函数时 怎样判断套接字连接状态(断开或连接)????
...全文
3883
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)
(read/write、
select
、getsockopt、signal)实
时
判断
socket
连接
状态
/是否
断开
为什么socket服务器
断开
之后客户端还能发送一次数据呢? 文章目录为什么socket服务器
断开
之后客户端还能发送一次数据呢?一、了解背后的原因1、客户端是如何将数据发送给服务器端的?(服务器端发客户端同理)二、解决办法 最近遇到一个大坑:发现服务器端
断开
连接
时
,客户端还能write成功一次,不过服务器端是没有收到的,而且我的服务器数据库里面也没有保存。最后一次能write成功估计是将数据写入到缓冲区里面了,但是客户端还没确定服务器是否已经
断开
了
连接
,所以能write成功。因为项目对数据比较敏感,没有成功发
怎样实
时
判断
socket
连接
状态
摘自:怎样实
时
判断
socket
连接
状态
? - yuxi_o - 博客园 对端正常close socket,或者进程退出(正常退出或崩溃),对端系统正常关闭 这种情况下,协议栈会走正常的关闭
状态
转移,
使用
epoll的话,一般要
判断
如下几个情况 处理可读事件
时
,在循环read后,返回结果为0 处理可写事件
时
,write返回-1,errno为EPIPE EPOLLERR或EPOLLHUP或事件 对端非正常
断开
,比如服务器断电,网线被拔掉 这种情况下,协议栈无法感知,SO_KEEPALIVE这个
python如何
判断
tcp异常
断开
_Tcp服务端
判断
客户端是否
断开
连接
今天搞tcp链接弄了一天,前面创建socket,绑定,监听等主要分清自己的参数,udp还是tcp的。好不容易调通了,然后就是一个需求,当客户端主动
断开
连接
时
,服务端也要
断开
连接
,这样一下次客户端请求链接的
时
候才能成功链接。然后就开始找各种方法。其中简单的是看recv()返回为0,表明
断开
了链接,但是recv
函数
始终返回SOCKET_ERROR,找不到原因。。。。。。。。。。。。现在已经调通了,就是...
linux网络编程学习笔记(6)——TCP
连接
状态
的多种
判断
方法
在TCP网络编程模型中,无论是客户端还是服务端,在网络编程的过程中都需要
判断
连接
的对方网络
状态
是否正常。在linux系统中,有很多种方式可以
判断
连接
的对方网络是否已经
断开
。 通过错误码和信号
判断
通过
select
系统
函数
判断
通过TCP_INFO
套接字
选项
判断
通过SO_KEEPALIVE
套接字
选项
判断
通过SO_RCVTIMEO/SO_SNDTIMEO
判断
(一)通过错误码和信............
Python的
select
.
select
()
函数
初探
在学习到Python的
select
函数
时
,我被卡了半天,在网上搜相关的内容,大都是互相“借鉴”,并没有说清楚这个
函数
是怎么运行,应该怎么
使用
。经过不断试验,终于初步弄清了这个
函数
是怎么工作的,在此记下笔记,以供参考。
Linux/Unix社区
23,223
社区成员
74,536
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章