我用recvfrom接受数据,但只要收第一个包就行了,后面的包对我来说都是废包,请问应该如何将接收缓冲里的数据清空?

解决方案 »

  1.   

    比如你是这样接收
    char = chtemp[1024];
    recv(socket,chtemp,1024,0);
    memset(chtemp,0,1024);
      

  2.   

    int buflen=1024*8;
    int optlen=4;
    setsockopt(s,SOL_SOCKET,SO_RCVBUF,(char *)&buflen,optlen);
    我指的是这里的缓冲区,谢谢。
      

  3.   

    这个缓冲区每当有数据进来时就会被填充,即使你用代码清空也是没用的。但是recvfrom()函数是用代码控制的,用自己设定的标志来判断是否是有用的数据。