Есть ли способ просмотреть / измерить потерю буфера сокета UDP в Windows Server 2008 R2? Я пробовал netstat -s и смотрел доступные счетчики perfmon, но мне ничего не показалось в качестве меры размера или потери буфера сокета.
Если нет возможности просмотреть его через какой-либо механизм, предоставляемый Windows, я должен отметить, что сетевая карта на этом сервере представляет собой двухпортовый серверный адаптер Intel Gigabit ET. Может быть, есть какая-то утилита от Intel, которая может показать эту информацию?
заранее спасибо
Под «потерей буфера» я предполагаю, что вы имеете в виду потери, вызванные заполнением буфера. (Потери UDP в сети могут быть обнаружены только путем разработки алгоритма уровня сеанса для отслеживания и подтверждения получения всех пакетов.)
Потери исходящего буфера будут сообщаться на уровне API сокета в виде ошибок, возвращаемых от Отправить() (или его эквивалент), например WSAENOBUFS
, WSAEWOULDBLOCK
, или WSAEMSGSIZE
.
Насколько мне известно, о входящих убытках явно нигде не сообщается. Однако вы можете использовать ioctl(FIONREAD)
чтобы определить, сколько данных находится во входящем буфере. Если он почти заполнен, и вы обнаруживаете убытки, можно с уверенностью сказать, что эти убытки являются результатом переполнения буфера.