linux socket 中判断对方关闭的两种方式
2011-04-26 09:21
239 查看
在TCP中,我是服务器,对方是客户端,对方挂掉了,我怎么能够知道呢?
UNP中说的FIN,RST对于应用层来讲,是不可见的……
我跟客户端的联系只是通过read,write嘛。
socket又不会自动给我信号啥的。
当对方挂掉了之后呢
如果对方正常关闭的,应该发一个FIN过来。
我这边的select到一个可读,然后读返回0.
如果对方不正常挂掉了,应该发一个RST过来。
我这边select表示可写。
然后写第一次,引发一个RST,写第二次,引发一个SIGPIPE。
这个SIGPIPE默认动作是干掉进程。
因此我们处理掉这个信号。
那么,第一次触发RST的write出去的数据就丢掉了,找不回来了。
这个~~我还没有想出来怎么办……。
UNP中说的FIN,RST对于应用层来讲,是不可见的……
我跟客户端的联系只是通过read,write嘛。
socket又不会自动给我信号啥的。
当对方挂掉了之后呢
如果对方正常关闭的,应该发一个FIN过来。
我这边的select到一个可读,然后读返回0.
如果对方不正常挂掉了,应该发一个RST过来。
我这边select表示可写。
然后写第一次,引发一个RST,写第二次,引发一个SIGPIPE。
这个SIGPIPE默认动作是干掉进程。
因此我们处理掉这个信号。
那么,第一次触发RST的write出去的数据就丢掉了,找不回来了。
这个~~我还没有想出来怎么办……。
相关文章推荐
- java Socket判断对方是否已关闭连接
- 判断JS对象是否拥有某种属性的两种方式
- c语言下,关闭socket的两种方式
- JavaScript判断变量是否为undefined两种方式差异
- 调出键盘以及关闭键盘的两种方式
- mybatis 映射文件中if标签判断字符串相等的两种方式
- if (document.all&&document.getElementById) 判断浏览器是否同时支持documnet.getElementById和document.all两种表述方式(方法)
- 判断JS对象是否拥有某种属性的两种方式
- 判断机器大小端的两种实现方式
- 判断链表是否有环的两种方式和创建有无环的方法
- Shell scipt两种判断方式
- Linux下chkconfig命令详解即添加服务以及两种方式启动关闭系统服务
- objective-c - 基础篇 - 关闭键盘的两种方式
- IOS中关闭键盘的两种方式
- 关闭当前窗口 弹出询问 和不弹询问窗口 两种方式
- JavaScript判断变量是否为undefined两种方式差异
- 并行计算实现判断一个数是不是素数--Win32和.Net两种方式结合
- android ScrollView判断滑动到底部的两种方式
- python 状态机语句"Python is fun"褒贬义判断的两种实现方式
- Python ----判断可迭代的两种方式