我想实现两台机器间的大量数据传输
问题:
(1)socket一次的传输上届
(2)我在服务器端向客户发
    m_ser.Send(ptr,768*576);
    在客户端接受如下
    ***::OnReceive()
   {
    if(len<768*576)
    {
       len+=m_cli.Receive(recv,1024);
     }
     else
     {
       *(recv+len)='\0';
     }
    }
   ============>第一次传输可以实现,以后就不行了,界面死掉
   是不是涉及到缓冲????
请多帮助我吧!

解决方案 »

  1.   

    你OnReceive写错了,如果是大数据包时,Client端会多次响应OnReceive()事件,你应该定义len为全局变量,每一次都Receive完,直到len == 768*576后,把每次Receive到的合并成一个整的。ok
      

  2.   

    可能是*(recv+len)已经超出了recv定义的长度,造成程序死掉。
      

  3.   

    我在服务器端是一次发送,先发送数据长度,再发送数据
    客户端是先接受数据长度,然后再多次接受剩余的数据
    发现:服务器端点击发送后,客户端在接受到长度=96256时,
    客户端不再接受,服务器再点击发送,客户端才会把剩下的数据
    接受完毕,但是第二次发送的数据又不再接受了,以后服务器就
    无法发送数据了改正一个地方
     len+=m_cli.Receive(recv+len*sizeof(BYTE),1024);
      

  4.   

    你在onreceive中设置一个接受长度为768*576+1的值
    每次把接收到的数据复制到一个缓冲区,如果到达一个数据包的最大长度
    则发送一个接受完成一个数据包的消息,如果在最后一次接收到的数据有多余的则放到另一个缓冲区作为一个新的数据包的开始数据