socketの質問で申し訳ありませんが、
selectでFD_ISSET(s,&fdread)のときにrecvをしないでFD_CLR(s,&fdread)としても
受信内容は失われませんよね?
次にまたselectしたときにまたFD_ISSET==TRUEになりますよね。