为什么小弟我用vc编写FTP程序在两台电脑之间传输压缩文件的时候文件损坏了
为什么我用vc编写FTP程序在两台电脑之间传输压缩文件的时候文件损坏了
为什么我用vc编写FTP程序在两台电脑之间传输压缩文件的时候文件损坏了
------解决思路----------------------
能单步跟踪一下传输过程是最好的,或者把每次发送的日志打印出来,看看是不是发送的数据有问题。
或者对比一下两个文件的字节数,如果不一致就是传输的时候漏发了一部分。
传一个内容是数字的txt文件试试,看看传过去后是那部分没法送成功。
------解决思路----------------------
不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
http://bbs.****.net/topics/380167545
------解决思路----------------------
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
不要把
fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fseek,fread,fwrite,fgetc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
------解决思路----------------------
2楼链接里面已经说的非常清楚了。
另外提醒:
不要把
fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fseek,fread,fwrite,fgetc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
------解决思路----------------------
Sleep(1000);//延时1000毫秒,保证不了发送和接收的同步。只能通过接收对方的应答的方法保证发送和接收的同步
if(SOCKET_ERROR==send(s,size,strlen(size)+1,0))
------解决思路----------------------
你这个代码不支持超过2GB的文件传送。
参考
__int64 _telli64( int handle );
int _fileno( FILE *stream );
------解决思路----------------------
接收端接收到一半断网了咋办?
为什么我用vc编写FTP程序在两台电脑之间传输压缩文件的时候文件损坏了
------解决思路----------------------
能单步跟踪一下传输过程是最好的,或者把每次发送的日志打印出来,看看是不是发送的数据有问题。
或者对比一下两个文件的字节数,如果不一致就是传输的时候漏发了一部分。
传一个内容是数字的txt文件试试,看看传过去后是那部分没法送成功。
------解决思路----------------------
不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
http://bbs.****.net/topics/380167545
------解决思路----------------------
推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。
不要把
fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fseek,fread,fwrite,fgetc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
------解决思路----------------------
2楼链接里面已经说的非常清楚了。
另外提醒:
不要把
fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n,写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待
和
fopen("...","...b");fseek,fread,fwrite,fgetc,fclose //不作以上替换,遇到\x1a仍继续读;读写的内容当字节看待
弄混了
------解决思路----------------------
Sleep(1000);//延时1000毫秒,保证不了发送和接收的同步。只能通过接收对方的应答的方法保证发送和接收的同步
if(SOCKET_ERROR==send(s,size,strlen(size)+1,0))
------解决思路----------------------
你这个代码不支持超过2GB的文件传送。
参考
__int64 _telli64( int handle );
int _fileno( FILE *stream );
------解决思路----------------------
接收端接收到一半断网了咋办?