四、TCP C/S:连接建立后,服务器主机崩溃

原创
2016/06/19 22:35
阅读数 1.3K

1. 程序源码

http://my.oschina.net/lowkey2046/blog/693852

2. 测试方法

需要使用两台主机进行测试

a. 在树莓派上(192.168.1.24)上启动服务器进程

$ ./tcpserv01 &
[1] 1782

b. 在 PC 机上启动客户端进程,输入 hello world

测试客户端能接收到服务器数据

$ ./tcpcli01 192.168.1.24
hello world
hello world

c. 直接将树莓派电源拔掉

在客户端上继续输入 'hello',数据将由 write 写入内核,再由客户 TCP 作为一个数据分节送出。之后,会一直客户端阻塞于 read,等待服务器响应。

客户端 TCP 持续重传数据分节,试图从服务器上接收一个 ACK。

hello 
str_cli: server terminated prematurely

最后 read 超时返回。通过 perror 查看出错原因为:Connection timed out。

3. wireshark 截图

输入图片说明

可以看出,客户端一直尝试 TCP 重传,尝试了16次才放弃,总共花费了十多分钟。

4. 客户端尝试连接奔溃的主机

客户端执行

$ ./tcpcli01 192.168.1.24
connect: Connection timed out

wireshark 截图

输入图片说明

客户端重试6次收终止,总共花费一分多钟。

参考资料

《UNP》

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部