急求socket跨unix和windows平台文件传输方法

herobox 2011-04-21 10:42:48
大家好,小弟遇到一个很烦人的问题,是这样的,原来我们有unix下socket文件传输的程序,大体是这样的:server开个守护进程,然后client端创建socket连接,如果是client端给server传呢,client先通过stat函数得到本地文件的长度,通过socket先把这个文件长度发给server,server收到后就知道了,回传一个信息给client表示确认。双方事先约定好传送的包的长度,比如512,然后通过文件总长度除以512就知道要传多少“文件块”以及最后一个“文件块”的长度。然后client就开始通过for循环,开始fread,然后send;server那边就通过for循环开始recv,然后fwrite。这样就完成了文件传输。


可是我们现在要把client挪到windows下来,而server的尽量不动,我把代码移植过来了,开始传了一个很小的文件,没看出有啥问题,后来我尝试传了一个rar的压缩包,发现格式损坏,又尝试传了有很多行的文本文件,也不完全正确,我突然想起来windows和unix对回车换行的解释不同,windows换行是一个换行+回车,unix就一个换行啥的,我通过stat函数测试发现,果然同样的文本文件,在win平台和unix下得到的长度不同,愁死我了,怎么解决呢?
还得尽量不动server的程序,只改client的代码,但是在win这边,文件长度就不同,请求高人指点啊!谢谢!
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
aijianmeng 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 boksic 的回复:]

按二进制读写传送
[/Quote]
同上,二进制传输
boksic 2011-05-24
  • 打赏
  • 举报
回复
按二进制读写传送
Developerljm 2011-05-23
  • 打赏
  • 举报
回复
我想是不是读写文件的问题,不要操作字符串,而是字节byte.

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧