TCP客户端为什么总是将多帧数据一起接收,而不是一帧一帧的接收?客户端是通过消息来告知收到数据的virtual void OnReceive(int nErrorCode);经测试,当服务端每隔500ms或更短时间发一帧数据,客户端会将几帧数据放在一帧中例如:服务端发送01 02 03 ,每500ms一次,连发3次,
客户端会收到一帧数据:
01 02 03 01 02 03 01 02 03 
而不是我所希望的3帧数据请问我哪里出问题了,谢谢大家帮忙!

解决方案 »

  1.   

    这是个概念问题,因为TCP是基于流的,UDP才是基于报文的。或许关闭Neagle算法可能解决你的问题,即设置IPPROTO_TCP / TCP_NODELAYBOOL noDelay=TRUE;
    setsockopt(s, IPPROTO_TCP , TCP_NODELAY, (char*)&noDelay, sizeof(noDelay));
      

  2.   

    客户端的接收数据时,不要一次READ太多,就你的例子而言,READ的字节数可以设为3,这样不就一帧一帧地接收了吗?数据一般是不会丢失的,你可以放心。