免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2438 | 回复: 9
打印 上一主题 下一主题

文件服务器的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-10 15:44 |只看该作者 |倒序浏览
客户端向服务器上传文件,在此过程中:

其一、如果服务器进程崩溃,会给客户端发送FIN分节,而此时客户端正阻塞在发送数据上,怎样能知道服务器崩溃这件事?
其二、服务器主机崩溃,客户端向其写入一个分节时,应该会收到RST分节,但此时客户端仍阻塞在发送数据上,不能读到RST分节(客户端为windows,所以向收到RST的套接口发送数据并不会引起SIGPIPE信号)

其教大家,这两件事如果发生了怎么办??

论坛徽章:
0
2 [报告]
发表于 2007-07-10 15:56 |只看该作者
>如果服务器进程崩溃,会给客户端发送FIN分节,而此时客户端正阻塞在发送数据上,怎样能知道服务器崩溃这件事?

谁说服务器崩溃会发送FIN?

论坛徽章:
0
3 [报告]
发表于 2007-07-10 15:57 |只看该作者
原帖由 isnowran 于 2007-7-10 15:56 发表
>如果服务器进程崩溃,会给客户端发送FIN分节,而此时客户端正阻塞在发送数据上,怎样能知道服务器崩溃这件事?

谁说服务器崩溃会发送FIN?


服务器进程崩溃的话会关闭套接字,发送FIN分节,有问题吗?

论坛徽章:
0
4 [报告]
发表于 2007-07-10 17:35 |只看该作者

回复 #1 Jass 的帖子

请区分应用态和内核态的处理,就是FIN和RST都是系统帮你处理的,应用的接口只能通过返回判断。
一般应用态调用发送,系统只完成应用缓存到内核缓存的拷贝。一般不会阻塞。
假设阻塞,也是发送的调用返回失败。

论坛徽章:
0
5 [报告]
发表于 2007-07-10 17:37 |只看该作者
原帖由 apony 于 2007-7-10 17:35 发表
请区分应用态和内核态的处理,就是FIN和RST都是系统帮你处理的,应用的接口只能通过返回判断。
一般应用态调用发送,系统只完成应用缓存到内核缓存的拷贝。一般不会阻塞。
假设阻塞,也是发送的调用返回失败。


当缓冲区满了,对方没有接收,调用会阻塞,而不是失败吧。
如果是非阻塞套接字,会返回失败;但是阻塞套接字只是会阻塞。

论坛徽章:
0
6 [报告]
发表于 2007-07-10 17:51 |只看该作者

回复 #5 Jass 的帖子

你的前提没错,但调用阻塞后,系统接受到RST为什么不会将你的应用返回失败呢?
应用的表现只是由阻塞一段时间后又返回了。

论坛徽章:
0
7 [报告]
发表于 2007-07-10 18:14 |只看该作者
这是设计的问题
如果你的调用是阻塞的,又不考虑同时还要知道对方能发数据过来,那就没有办法了。
如果知道会发生这种情况,就应该调用非阻塞的接口

论坛徽章:
0
8 [报告]
发表于 2007-07-10 21:03 |只看该作者
原帖由 Jass 于 2007-7-10 15:57 发表


服务器进程崩溃的话会关闭套接字,发送FIN分节,有问题吗?

服务器都崩溃了,谁给你发FIN啊?

论坛徽章:
0
9 [报告]
发表于 2007-07-11 09:08 |只看该作者
原帖由 isnowran 于 2007-7-10 21:03 发表

服务器都崩溃了,谁给你发FIN啊?


当然是服务器给我发了。服务器进程崩溃和服务器主机崩溃是不同的,您没看清我的问题

论坛徽章:
0
10 [报告]
发表于 2007-07-11 23:54 |只看该作者
原帖由 Jass 于 2007-7-11 09:08 发表


当然是服务器给我发了。服务器进程崩溃和服务器主机崩溃是不同的,您没看清我的问题

崩溃者,无能也,你可以说服务器关闭,别说崩溃,歧义之...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP