Различная производительность между sendto и recvfrom

Я заметил разницу в производительности между sendto и recvfrom (UDP). Я отправляю около 100 Кбайт с сервера на клиент, используя WiFi (расчетная пропускная способность около 30 Мбит/с в обе стороны), а время отправки составляет около 4-5 мс (в зависимости от обстоятельств, но это значение сравнимо с идеальным). , 3 мс). На клиенте время приема в десять-пятнадцать раз больше, вроде 50-60мс. Я хотел бы, чтобы два истекших времени были очень похожи. Есть идеи?


person user2485792    schedule 29.07.2013    source источник


Ответы (1)


а время отправки около 4-5 мс (как бывает, но это значение сравнимо с идеальным, 3мс)

30 Мбит/с (где b означает биты) примерно (плюс-минус с учетом заголовков и т. д.) равно 3 МБ/с (где B означает байты). Для передачи 100 КБ требуется примерно 30 миллисекунд.

sendto возвращается, как только запишет все данные в локальный буфер сетевого стека отправляющей машины. recv, очевидно, должен ждать передачи данных, включая задержку и прочее, необходимое для всех уровней протоколов.

person JeremyP    schedule 29.07.2013
comment
Извините за плохую оценку времени отправки. Итак, если прошедшее время 4-5 мс на самом деле является временем записи данных в локальный буфер, sendto возвращает, даже если все данные фактически не отправлены? - person user2485792; 29.07.2013