内核的TCP程序会进行四次挥手关闭连接,如果应用层正在读取数据:
①.如果数据没有读完,会继续读取缓冲区的数据;
②.如果读完了,在读的话读函数返回0,表示EOF,TCP连接关闭,读到了socket文件末尾;
如果应用层在写数据:
①.如果内核已经完成了四次挥手,则写函数返回-1,errno=EPIPE,同时整个程序收到一个SIGPIPE信号,该信号默认终止整个程序。
②如果内核还没有感知到TCP连接关闭,也就是说对端关闭了连接,但是由于距离过远,当前还不知道对端已经关闭了连接,那么调用写函数返回-1,errno=ECONNRESET,(connection reset by peer),本次调用后内核就会关闭TCP连接,下一次再调用写函数情况如①.

Logo

更多推荐