Я не пробовал, и это может быть совершенно неразумно по соображениям производительности (но если ваше приложение все равно спит, это может не быть проблемой), но: вы можете попробовать установить буфер приема сокета на очень маленькое значение перед сон. Я надеюсь, что это приведет к тому, что сокет не сможет буферизовать данные, поступающие, когда приложение не прослушивает. Это своего рода длинный выстрел.
В качестве альтернативы, возможно, сброс размера приемного буфера после сна, когда вы будете готовы снова начать чтение, также приводит к его сбросу. Конечно, эти уловки - это просто так, и даже если они работают, они наверняка не переносимы. Я просто подумал, что поделюсь этой идеей, если у вас есть шанс протестировать ее, она может вам помочь.