Я заметил, что существует разница в производительности между sendto и recvfrom (UDP). Я посылаю около 100 Кбайт с сервера клиенту, используя WiFi (расчетная полоса пропускания составляет около 30 Мбит/с в обоих направлениях), а время отправки составляет около 4-5 мс (это зависит, но это значение сопоставимо с идеальным , 3 мс). На клиенте время приема в десять-пятнадцать раз выше, например 50-60 мс. Я бы хотел, чтобы два прошедших раза были очень похожими. Есть идеи?Различные характеристики между sendto и recvfrom
0
A
ответ
1
и время отправки составляет около 4-5 мс (это зависит, но эта величина сравнима с идеальной, 3 мс)
30Mb/с (где б означает биты) приблизительно (указать или принять для учета заголовков и т. д.) 3 МБ/с (где B означает байт). Для передачи 100 кбайт потребуется примерно 30 миллисекунд.
sendto
возвращается, как только он записал все данные в локальный буфер сетевого стека отправляющей машины. Очевидно, что recv
должен ждать передачи данных, включая задержку и все необходимое для всех уровней протоколов.
Извините за неправильную оценку времени отправки. Итак, если прошедшее время 4-5 мс на самом деле является временем записи данных в локальный буфер, sendto возвращает, даже если все данные фактически не отправлены? – user2485792