CS模型之服务器进程终止
来源:互联网 发布:医学大数据分析工资 编辑:程序博客网 时间:2024/06/05 20:36
现在我们启动我们的客户/服务器,然后杀死服务器子进程。这是在模拟服务器进程崩溃的情况,我们可从中查看客户将发生什么。
(1)启动服务器和客户端,正常回射。
(2)找到服务器子进程ID,并kill杀死它。子进程中所有打开的描述符都被关闭。这导致向客户发送FIN,而客户TCP则相应ACK。这就是TCP连接终止工作的前半部分。
(3)SUGCHLD信号被发送给服务器父进程,并得到正确处理。
(4)客户上并没有发生任何特殊之事。客户TCP接收服务器TCP的FIN并相应一个ACK,然而问题是客户进程阻塞在fgets调用上。
(5)我们再键入一行,str_cli调用writen,客户TCP接着把数据发给服务器,TCP允许这么做,因为客户收到FIN只是表示服务器进程已关闭了连接的服务器端,从而不再往其中发送任何数据而已。
(6)当服务器端接收到TCP客户数据时,相应RST。
(7)然而客户进程看不到RST,因为它在调用writen后立即调用readline,并且收到(2)的FIN,readline返回0。
(8)客户端关闭时,所有打开的描述符关闭
问题
当FIN到达套接字时,客户正阻塞在fgets调用上,客户实际在应对两个描述符,套接字和用户输入,它不能单纯阻塞在这两个源中的某个特定源上。接下来讲解select和poll可以解决这个问题。
阅读全文
0 0
- CS模型之服务器进程终止
- socket编程之并发服务器(CS模型改进2)
- Linux之进程终止
- Linux之进程的终止
- 进程终止分析之二
- Linux进程管理之进程的终止
- Linux进程管理之进程的终止
- 进程服务器模型和线程服务器模型
- OS之 进程的创建与终止
- 终止进程
- 终止进程
- 终止进程
- 终止进程
- 进程终止
- 终止进程
- 进程终止
- 终止进程
- 终止进程
- wosa标准专有设备访问与锁定
- 单张图片延迟加载
- 能上QQ但是打不开网页
- 调用函数时前面为什么要加(void)
- 工作日记2017.08.17
- CS模型之服务器进程终止
- 推荐学习(变态广告设计)
- js -- 设置滚动条随着输入内容滚动(在模拟微信表情输入的时候遇到的)
- 反射机制:类中方法及成员变量赋值
- 论文导读:面向卷积神经网络的卷积核冗余消除策略
- Android性能优化典范
- 拾荒者Unity2D游戏开发流程笔记
- java处理emoji表情
- 哲学家就餐