社区
Linux/Unix社区
帖子详情
在使用select() 函数时 怎样判断套接字连接状态(断开或连接)????
奔跑吧猴哥
2005-10-12 10:43:04
在使用select() 函数时 怎样判断套接字连接状态(断开或连接)????
...全文
2227
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)
套接字
连接
状态
检测
主动
断开
连接
主动
断开
连接
会发送,关闭事件 connec
函数
检测
连接
状态
,getlasterror send发送或者接收异常 linux中的
select
(socket用户和内核传递数组,大小有限制)、poll(同
select
大小无限制)、epoll(内核态数据) 拔网线 拔网线后,关闭事件不能传递,
连接
状态
不好检测 设置
连接
或者发送超
时
,同步
套接字
超
时
设置 // platform-specific switch #if defined _WIN32 || defined WIN32 || defined
python tcp
连接
状态
判断
_
套接字
-如何
判断
python中的
连接
是否中断
套接字
-如何
判断
python中的
连接
是否中断我希望我的python应用程序能够知道另一侧的
套接字
何
时
被删除。 有办法吗?5个解决方案44 votes简短回答:
使用
非阻塞的recv()或阻塞的recv()/
select
() 超
时
时
间短。答案很长:处理
套接字
连接
的方法是根据需要进行读取或写入,并准备处理
连接
错误。TCP区分“丢弃”
连接
的3种形式:超
时
,重置,关闭。其中,无法真正检测到超
时
,TCP...
怎么检测服务器
连接
状态
是否
断开
select
()
函数
:可以用于监视一组文件描述符(包括
套接字
)是否准备好进行读写操作。当
套接字
连接
断开
或有消息到达
时
,
select
()
函数
会返回相应的
状态
。当
连接
断开
时
,该
函数
可能返回一个错误代码, 可根据该错误代码
判断
连接
是否已
断开
。如果发送失败,该
函数
可能返回一个错误代码,可以通过检查该代码
判断
连接
是否
断开
。getsockopt()
函数
:可以用于查询
套接字
选项的值。你可以
使用
它来检索
套接字
错误
状态
,例如
连接
是否
断开
。在C语言中,你可以
使用
套接字
(socket)编程相关的
函数
来检测服务器
连接
状态
。
python tcp
连接
状态
判断
_Socket
套接字
连接
状态
判断
,接收数据笔记
最近工作中涉汲到一些Socket 方面应用 ,如断线重连,
连接
状态
判断
等,今天做了一些总结。1.
判断
Socket
连接
状态
通过 Poll 与 Connected 结合
使用
,重点关注
Select
Read 模式方法名:Socket.Poll (int microSeconds, System.Net.Sockets.
Select
Mode mode) 方法参数:参数枚举:
Select
Read如果已...
c#
判断
套接字
链接
断开
最近用c#编写一个一卡通网络通讯程序,服务端如何
判断
某个
套接字
是否关闭,查找了好多资料,也没能解决,经过重新琢磨socket中的Poll
函数
和TcpClient中的属性Connected,二者组合则可
判断
网络是否关闭,代码如下 public bool IsConnected(TcpClient tc) { if (tc==null || tc.C
Linux/Unix社区
23,128
社区成员
74,510
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章