最近一个项目中,用到socket传输数据。有服务器和客户端两部分,分别在局域网不同的机器上,客户端接收的数据量在15000字节左右,当使用Debug版本时接收正常,当使用Release版本时,数据循环接收到最后总遗留一些字节接收不了,经过试验每次剩余无法接收的数据量一定。
请问高手,是怎么回事?

解决方案 »

  1.   

    code比较长,有没有碰到类似情况的朋友?
      

  2.   

    关于这个问题我都已经怕了,干脆不用debug全用release了
      

  3.   

    while( total_readlen < shouldRecv )
        {
    //每次最大接收的数据为256个BYTE
    numbytes = recv(cli_fd, buf+total_readlen, shouldRecv-total_readlen , 0);
            if (numbytes==0 || numbytes ==SOCKET_ERROR)
            {
                  //do something 
            }
            total_readlen+=numbytes;
        }
      

  4.   

    while( total_readlen < shouldRecv )
        {
    numbytes = recv(cli_fd, buf+total_readlen, shouldRecv-total_readlen , 0);
            if (numbytes==0 || numbytes ==SOCKET_ERROR)
            {
                  //do something 
            }
            total_readlen+=numbytes;
        }
      

  5.   

    这个是Win32 Release模式 Win32 Debug模式的区别与比较: 
    Win32 Release模式     Win32 Debug模式
    源码调试 不能   编译器连接器都允许
    MFC诊断宏 不能(定义了NDEBUG) 可以(定义了_DEBUG)
    库连接  MFC Release库  MFC Debug库
    编译优化 速度优化(学习版不能) 没有优化(快速编译)我们应在Win32 Debug模式下开发应用程序,然后在发布或交付前用Win32 Release模式重建应用程序。in32 Release模式下建立的EXE文件又小又快。但是对于你这个问题就不大明白具体的原因了~~(或许就是楼上所说的优化问题所导致的)~~~
      

  6.   

    将Release下:Project Setting中C/C++下的Optimization由缺省的Maxmize Speed调整为Default就可以了