本帖最后由 freecodeMAN 于 2010-10-23 12:11:06 编辑

解决方案 »

  1.   


    高手正解.但有新问题
    问题1:  图片能显示了,但是是花的.(尝试多个图片都这样). 图片大小总比原图片大4,5k
    问题2: 体会到了fputs和fwrite的区别,但是具体原理是怎么工作的?
      

  2.   


    更恶心的是,,每次传过来大小还都不一样...显示效果也不一样。
    重复N次,原片71K,socket下载的从73-76K,,,且显示效果不同,,偶尔有能成型的...应该是传输问题了..如何解决。
      

  3.   

    我以前也遇到过图片读写只能成功80%,下面20%都是乱码。
    你试试把fopen改成fopen_s,三个参数
    if( ( fopen_s( &f,FilePath , "rb" ))==0 )

    recv(sockfd, text, BUFSIZ, 0);
    char *loc= strstr(text, "\r\n\r\n");
    fputs(loc, f);}
      

  4.   

    感觉你这个是从URL解析图片出来是么?如果这样的话,那你的方法可能就会导致一些问题。先把你的使用场景说说吧,应用是什么。
      

  5.   


    试了,,,不成。
    应该和文件的打开没关系。是每次socket接收到的 数据有差异。我在想是协议设置的问题,导致传输不是安全的,,错误数据比较多。
      

  6.   


    奥应用就是,现在我Oracle里存的很多图片地址。
    我现在要把这些图片,根据地址下载到本地。就直接用socket连接图片地址,,,然后保存返回的图片流。
      

  7.   

    结贴了. 
    是fwrite写进去长度时候计算错了...导致存的结果有出入。看这篇最后的回答吧。http://bbs.chinaunix.net/viewthread.php?tid=1118750