2013-07-12 3 views
0

Я хочу проверить клиентское приложение udp-сервера. Одной из особенностей, которую я хотел проверить, является временная задержка между данными, отправленными сервером и полученными клиентом, и наоборот. Я вычислил способ отправки сообщения с сервера клиенту и отметьте время. Клиент, получающий это сообщение, отправляет одно и то же сообщение обратно на сервер. Сервер получает это эхо-сообщение назад и снова отмечает время. Разница между временем отправки сообщения и возвратом полученного эхо-сообщения сообщает мне задержку между данными, отправленными сервером и полученными клиентом.Измерьте задержку между данными, отправленными udp-сервером и полученными клиентом

Правильно ли этот подход? Потому что я также предвижу много других задержек, связанных с использованием этого подхода. Что может быть возможным способом расчета более точных задержек?

Ждет поддержки.

+0

Это стандартный способ сделать это и способ, которым работает команда 'ping' (но она использует [ICMP] (http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol) вместо UDP). Однако, если вы не находитесь в локальной сети, могут возникнуть непредвиденные задержки на маршруте, а маршрут пакета «ping» может даже отличаться от маршрута пакета ответов. Для лучшей точности вы можете использовать несколько пакетов и использовать среднюю задержку. –

ответ

2

Да, это самый традиционный способ сделать это, вы можете это сделать.

+2

Это также самый простой способ сделать это. – Ermir

+1

Благодарим вас за быстрый ответ. – Ayse

1

Вы можете видеть на сниффер, используя относительное время между пакетом udp отправителя и пакетом udp приемника. Для получения более точных результатов вам нужно углубиться в стек окна, где он проверяет полученный пакет udp или нет. А для расчета таймера вы можете использовать часы реального времени, которые дают до микросекундной задержки. Также вы используете udp, который имеет высокий приоритет потери пакета, в отличие от tcp, который является очень надежным. Какой стек вы используете? LwIP?

+0

+1 за вашу помощь, но я новичок в этом, и я не знаю много деталей, таких как стек и т. Д. – Ayse

+1

Если вы новичок, то вам следует ознакомиться с основами сетевого TCPIP Suite, уровня OSI -> https: //en.wikipedia.org/wiki/Internet_protocol_suite Но поскольку вы работаете над сокетами, вы должны иметь более чем среднее знание о том, как работают протоколы, такие как tcp, udp, icmp, arp, dhcp, http, ftp, telnet и т. д. Лучший способ, который я рекомендую, - это прочитать rfc, это лучший. – Ishmeet

+0

Я обязательно посмотрю на это подробно. Большое спасибо :) – Ayse