问题是这样的,我用下面的语句接收服务器发给我的包
其中
#define MAXBUFFERLEN 2048
char szRecvbuf[MAXBUFFERLEN]
if((numbytes=recv(clientsock,szRecvbuf,MAXBUFFERLEN,0)) == -1)问题是,如果服务器在很短的时间内给我发了两个包,我会同时收到两个包。
然后我的处理就会有问题
因为我应该按一个包一个包处理有人说,recv不可能同时收到两个包
这种说法对吗

解决方案 »

  1.   

    很有可能,可以设置SO_RCVBUF  SO_SNDBUF 为0,但这个方法也不是太好.
    还有一种办法可以这样做,在不想粘的包的地方,增加反馈数据.
    例如:
    一方:
    send
    recv
    另一方:
    recv
    send
    这样能够达到同步的效果(阻塞式socket)
      

  2.   

    dongfa(一个红角好多年了~~~) 
    但是我的实际情况是这样的
    我在不同的线程当中用同一个socket传输数据
    这样,我估计还是有可能会出现粘包的
      

  3.   

    我在不同的线程当中用同一个socket传输数据
    /////////////////////要注意传输的同步问题