本帖最后由 VisualEleven 于 2012-01-07 16:47:59 编辑

解决方案 »

  1.   

    int ret = recv(m_SockClient,pRecvBuf + num ,500*1024,0);
    改成
    int ret = recv(m_SockClient,pRecvBuf + num ,500*1024 - num,0);
      

  2.   

    这个不奇怪吧,TCP是流协议,多次send的数据可能一次到接收端,recv一次就接收尽可能多的数据。
    send和recv并不是一一对应的,可能send多次,recv一次。
      

  3.   

    对,SOCK_STREAM是流式的,建议楼主看看底层代码,TCP有自己的数据校验,保证的是你的数据顺序到达,但是未必是按你的大小来到达.