Skip to content

Commit

Permalink
Update 连接的维护.md
Browse files Browse the repository at this point in the history
  • Loading branch information
linyacool authored Mar 7, 2018
1 parent 1e97d90 commit 714f680
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions 连接的维护.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
> * 出现各种关于连接的错误时,可以直接close()掉
> * 短连接超时的请求,可以close(),也可以不关
> * 长连接对方长时间没有请求(如果没有保活机制),可以close(),也可以不关
> * client发出Fin,server应当把消息发完,然后才可以close()
> * client发出Fin,server会收到0字节,通常不能判断client是close了还是shutdown,这时server应当把消息发完,然后才可以close(),如果对方调用的是close,会收到RST,server能感知到,就可以立即close了
> * 短连接正常结束,server可以close,也可以不close,大多数的实现是不close的(对HTTP1.1而言)

##### EPOLLIN触发但是read()返回0的情况

这种情况通常有两个原因:
> * 对端已经关闭了连接,这时再写该fd会出错,此时应该关闭连接
> * 对端只是shutdown()了写端,告诉server我已经写完了,但是还可以接收信息。server应该在写完所有的信息后再关闭连接。更优雅的做法是透明的传递这个行为,即server顺着关闭读端,然后发完数据后关闭。
> * 对端只是shutdown()了写端,告诉server我已经写完了,但是还可以接收信息。server应该在写完所有的信息后再关闭连接。更优雅的做法是透明的传递这个行为,即server顺着关闭读端,然后发完数据后关闭。

0 comments on commit 714f680

Please sign in to comment.