免费注册 查看新帖 |

Chinaunix

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

关于socket传送文件的问题,要求第一个包中要由文件整体信息和部分文件内容一起组成 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-31 10:24 |只看该作者 |倒序浏览
目前网上的关于socket传送本地文件到客户端的例子全是先发一个数据包,该数据包内只含有所要发送方的整个文件的大小的信息,而并不含文件的数据,那么如果我想提高发送效率,在发送的第一个包中就将所要发送的文件的整个大小以及文件中的部分内容整合发出,并且第一个包和后续的包的长度都不超过一个定长,如1448字节。那么应该怎样设计和实现,谢谢

论坛徽章:
0
2 [报告]
发表于 2012-01-31 18:02 |只看该作者
本帖最后由 thword1 于 2012-01-31 18:15 编辑

一般来说,发送文件信息和文件数据在逻辑上属于两个步骤。
发送文件信息是为了让对方判断是否需要接收这个文件,对方确认后,再发送文件数据。

在不需要对方确认的情况下,将两个部分放在一个包中发送,可以是可以,只是会造成代码不易阅读。

在发送端:
  1. filedata=f.read(1448-len(fhead)-1)  #最后-1为分隔符保留位置
  2. send(fhead+','+filedata)  #','作分隔符
复制代码
后面再用循环继续read()

在接收端:
对第一个包用进行特殊处理,后面的包用循环处理
  1. import re
  2. list=re.split('\s*,', recv ,1)  #将文件信息与文件数据分片
  3. fhead=list[0]
  4. filedata=list[1]
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP