本帖最后由 liufan291410 于 2010-12-31 09:34:53 编辑

解决方案 »

  1.   

    memset(press,'\0',sizeof(press));
    memset(unpress,'\0',sizeof(unpress));
    这两个都不对,sizeof(press)为指针的长度,32位为4
      

  2.   

    大家都说说嘛
    我用了memset(press,'\0',1024) 和 ZeroMemory(press,1024) 都不行,还是一样的情况。
      

  3.   

    1.iResult=send(sockClient,(const char*)&Sendinfo,len+10,0);
      为啥要+10?
    2.有关datainfo的代码贴出来。
    3.memset(press,'\0',sizeof(press))不对,原因上面已经说了
    4.compress没有判断返回值,这是不对的
      

  4.   

    memset(unpress,'\0',1024*sizeof(BYTE));
      

  5.   

    对于楼上大哥的问题我一一说下:
    1、因为我发送的是一个Sendinfo结构体,而我压缩的是另一个结构体datainfo的数据,然后赋值给Sendinfo.Bufdata成员数组。其Sendinfo的结构如下:
    typedef struct _COMMUNICATION_PACKET
    {
    int Flags;
    long lSession;
    BYTE Bufdata[512];
    }COMPACKET;2、datainfo结构就是保存的一些数据,很长就不要贴了,再说跟这无关紧要吧。
    3、后面我改了,memset(press,'\0',1024) 和 ZeroMemory(press,1024) 都不行,希望大哥给个示例,我太菜了。
    4、我感觉没有判断了返回值,不至于导致程序异常终止吧。希望大家有什么说什么,多多讨论下,我问的问题可能很菜,但大家也要体谅下菜鸟哦!
      

  6.   

    memcpy(Sendinfo.Bufdata,press,len);
    你确定你的长度小于512?
      

  7.   

    那是肯定的,我后面把Bufdata的大小也改成了1024,而且在Debug下跟踪了下数据,绝对是小于512的,大概只有100多。
      

  8.   

    我还说一下,在Debug模式下没有出现异常终止的情况,可以正常运行。
      

  9.   

    看看press是否为NULL?问题应该不在所贴代码处,去其他地方找找
      

  10.   

    在Release模式下编译后,出现如下的警告信息:
    zlib.lib(d000062.o) : warning LNK4078:multiple ".text" sections found
    witch defferent attributes (E0300020)
    LINK:warning LNK4089:all references to "d000000.o" discarded by /OPE:REF
    LINK:warning LNK4089:all references to "d000062.o" discarded by /OPE:REF
    我把两边的这几行代码去掉后,不用压缩和解压功能,直接发送,一点问题也没有。
      

  11.   

    看来还是没有找到问题的症结所在,也有可能是我的zlib库有问题,不过还是谢谢大家了!