1.服务器进程终止
当服务器进程终止时,服务器发送FIN给客户端,客户端回以ack,客户端进入CLOSE-WAIT状态,但还没有结束连接。
此时客户端阻塞于fgets,客户端继续发送buffer,服务器发送RST,客户端readline返回0。而如果客户端不理睬readline返回的RST,继续write,如:
Write()
sleep()
Write()
第二次write会收到sigpipe消息,会退出到终端没有任何提示信息。
2,服务器主机崩溃
这里模拟的是主机本机崩溃,而不是人为的执行关机。客户端write后阻塞在readline上,会重传tcp分节。
3,服务器主机崩溃后重启
服务器都是了先前的连接信息,会返回RST
4服务器主机关机
就相当于服务器进程终止了,所以和1相同。