急求socket跨unix和windows平台文件传输方法
大家好,小弟遇到一个很烦人的问题,是这样的,原来我们有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这边,文件长度就不同,请求高人指点啊!谢谢!