免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: kevert
打印 上一主题 下一主题

网络编程中关于判断是否接收一个文件完毕的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-02-05 08:15 |只看该作者
可以定义一个数据包协议,
如包头包含所要接受文件的长度,
通过包头就可以判断文件的长度

论坛徽章:
0
12 [报告]
发表于 2007-02-05 09:07 |只看该作者
对,楼上的也不失为一种解决办法,不过我想知道如果按照我目前的情况来看,有没有办法解决这个问题呢?
DaYuTou 该用户已被删除
13 [报告]
发表于 2007-02-05 09:45 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
14 [报告]
发表于 2007-02-05 10:20 |只看该作者
那意思就是说读到文件尾read不会返回0???
那返回什么? -1么?

论坛徽章:
0
15 [报告]
发表于 2007-02-05 10:28 |只看该作者
原帖由 kevert 于 2007-2-4 19:53 发表


是,我现在就是这样的,服务器方shutdown()写的操作,然后客户端就知道文件结束了
现在我想的是服务器不要shutdown写操作,然后让客户自己怎样来判断文件结束
难道read返回0不表示文件结束么?


发送端通过 control session 发一个字符串,比如 "123 FIN\r\n",用以通知接收方。应用层的东西,还是在应用层里解决比较好。

--
DaYuTou 该用户已被删除
16 [报告]
发表于 2007-02-05 10:42 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
17 [报告]
发表于 2007-02-05 10:43 |只看该作者
原帖由 kevert 于 2007-2-5 10:20 发表
那意思就是说读到文件尾read不会返回0???
那返回什么? -1么?


应用层的东西,还是不要依赖传输层,比较好。

--

论坛徽章:
0
18 [报告]
发表于 2007-02-05 15:18 |只看该作者
这种问题可以通过开控制端口和数据传输端口的办法来解决,推荐去看看vsftp的源码。

论坛徽章:
0
19 [报告]
发表于 2007-02-05 15:35 |只看该作者
如果一路连接,

方法之一: 用一个文件结尾标志串(比如END OF FILE askfdk213908893489uqesaiofihoasehifuiasiudfh8932899829837897hasjhaskj )来标志结束。读到此串后再从SERVER读校验和,和CLIENT的对比。

论坛徽章:
0
20 [报告]
发表于 2007-02-05 17:22 |只看该作者
谢谢各位给我提出的那么多好的建议

我现在想问的是,在目前的情况下,除了用服务器端shutdown或者close关闭连接外,还有没有其他方法呢?
当然,我不是死扣,以上各位的方法都比我在帖子中采用的方法强,但是我就只现在我帖的那段代码论事。
是不是跟TCP没有流没有边界控制有关呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP