呵呵,其实这个问题蛮简单的,就是有时候感觉不到而已。我在客户端代码大致如下:
我接收端代码是:
- //3 把文件分段传输
- memset(&asp,0,sizeof(asp));
- FILE *f=fopen(localFilename,"rb");
- unsigned int count=0;
- while (asp.transfer.len= fread(&asp.transfer.data,1,TRANSFER_CAPACITY,f))
- {
- asp.datatype=_DataType_Transfer_;
- asp.transfer.id=++count;
- SendPacket();
- memset(&asp,0,sizeof(asp));
- RecvPacket();
- memset(&asp,0,sizeof(asp));
- }
- fclose(f);
file=fopen(request.filename,"w");这段代码怎么就是工作不正常的呢?
。。。
fwrite(asp.transfer.data,1,asp.transfer.len,file);
。。。
我在Windows的记事本里看,两个文本文件显示的一模一样。但是放到Araxis Merge中发现,我接收到的文件都比原文件要多很多换行。源文件有一个换行,接受回来就是两个。。。
这是怎么回事的呢?
我传个文本文件就这个样子,那二进制的话,还怎么活啊?
嘿嘿,可能问题出在“二进制”上面!
尝试把接受代码改为
file=fopen(request.filename,"wb");
搞定!呵呵,貌似UNIX下面不需要这个b参数来表示二进制,但是Win下面是必需的。
没有评论:
发表评论