Скорее всего, это зависит от платформы, так на какую платформу вы нацеливаетесь?
Если вы используете Windows, тогда я предлагаю вам использовать перекрывающиеся порты ввода-вывода и I / O Completion Ports, установите recvбуфер до 0 и всегда имеет несколько ожидающих RecvFrom()
вызовов.
Это должно a) удалить способность стека буферизовать дейтаграммы, когда у вас нет ожидания RecvFrom()
и b) позволить вам обрабатывать некоторые дейтаграммы.
Затем вы настраиваете количество неоплаченных операций, которые у вас есть, так что у вас всегда будет немного больше, чем у вас ядер для обработки входящих дейтаграмм, и вы получите то, что хотите.