在TCP中,我是服务器,对方是客户端,对方挂掉了,我怎么能够知道呢?
UNP中说的FIN,RST对于应用层来讲,是不可见的……
我跟客户端的联系只是通过read,write嘛。
socket又不会自动给我信号啥的。
当对方挂掉了之后呢
如果对方正常关闭的,应该发一个FIN过来。
我这边的select到一个可读,然后读返回0.
如果对方不正常挂掉了,应该发一个RST过来。
我这边select表示可写。
然后写第一次,引发一个RST,写第二次,引发一个SIGPIPE。
这个SIGPIPE默认动作是干掉进程。
因此我们处理掉这个信号。
那么,第一次触发RST的write出去的数据就丢掉了,找不回来了。
这个~~我还没有想出来怎么办……。