读书人

怎么清空Socket缓冲区

发布时间: 2012-09-27 11:11:17 作者: rapoo

如何清空Socket缓冲区
有什么办法能一次性吧缓冲区的内容全部Recv下来呢?
用While循环会有这样的问题
比如
while(true)
{
int ret = recv(socket, buf, 500,0);
if(ret != 500)
{
break;
}
}
那么当我缓冲区内的消息正好是500的倍数的时候,第一次ret=500 不退出循环 下一次recv因为缓冲区内没有消息,就会堵塞!

有什么好办法能不阻塞 把缓冲区的消息都接下来么?

[解决办法]

探讨
踢掉客户端是一个办法
但是感觉不太好
我还是希望能清空缓冲区
牺牲掉下一个报文 保证后续的报文不会出错 程序也不会当掉
能实现么

读书人网 >C语言

热点推荐