基于Python通过socket在windows和linux之间进行文件传输

公司的项目开发在linux下进行编译(Ubuntu16.04),但是需要在windows中进行更新,所以需要进行文件的传输,为了熟悉socket的操作,自己写的socket程序

由于参考的是网上的程序,基本思路就是,首先发送一次数据,(一个buf就可以传完),包含文件名和文件大小,使用

struct.calcsize('128sl')

计算大小,然后使用

struct.pack()

进行打包,发送之后开始发送文件数据

细节将来再说(其实也没啥细节了),反正测试的效果就是

  • 当服务器和客户端都在windows平台的时候,文件传输没有问题;
  • 当服务器和客户端都在linux平台的时候,文件传输也是没有问题的;
  • 服务器在linux,客户端在windows,文件传完损坏;
  • 服务器在windows,客户端在linux,文件传完损坏;

但即使文件损坏,大小是一样的

纠结了半天不知道是为什么,以为是字节序之类的问题,后来突发奇想用hex查看器(npp的hex viewer插件)看了一下,发现接收到的文件开头莫名有4个空字节,后面与原文件又是一样的,相应的,最后的4个字节不见了,想来想去,考虑到可能是前面发送的文件信息的问题,于是尝试用

len()

获取了一下发送的文件信息的长度,发现竟然不一样!!

明明都是用相同的128sl进行的打包,结果竟然是不同的,于是进行测试,发现

测试结果.PNG

l的长度是不一样的,这太糟心了……

后来的实现方式是使用128si,一段时间是能用了,但是后来又出现了问题,具体原因我还没找到,找到了再来更新~~

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容