chenshuo / muduo

Event-driven network library for multi-threaded Linux server in C++11
https://github.com/chenshuo/muduo
Other
14.64k stars 5.14k forks source link

TcpConnection在read为0时是被动的关闭连接,如果此时服务端有数据仍然未发送咋办? #636

Closed guang19 closed 2 years ago

guang19 commented 2 years ago

服务端read为0时调用handleClose,最终会把自己从map中移除,如果TcpConnection的引用计数为0那么会调用析构最终close fd。我的问题是如果客户端只调用了shutdown write,但对服务端来说通道仍然是可写的吧,为啥服务端不先shutdown read而是close呢?我的猜想是如果服务端仍有数据,那么由用户在socket关闭之前的connection的回调里去发送,发送完用户可以shutdown也可以不shutdown,反正最终socket都会被关闭,不知道我的想法对不对?