Я хотел бы знать, был ли способ узнать время, прошедшее во время перемещения данных в сети.C# Socket, время, прошедшее во время отправки
Например, я отправляю пакет с компьютера A на компьютер B и C (поэтому прошедшее время может отличаться для каждого в зависимости от расстояния и т. Д.), И я хочу знать время между отправкой и получением для каждого клиента (чтобы точно синхронизировать данные).
Кроме того, важно знать, что мой клиент ДОЛЖЕН работать в асинхронном режиме (это не проблема).
Кто-нибудь знает, как это сделать?
KiTe.
проблема в том, что мне нужна довольно высокая скорость отправки/получения, поэтому отправка данных, безусловно, замедлит глобальное приложение. Интересно, как они работают в таких играх, как fps или rts: даже там есть центральный сервер, который действует как коммутатор между хостами, есть еще задержка (которая может идти до сотен мс) – Kite
, но в основном, когда я отправляю пакет с моим сокетом, не должен ли я получать ACK? (так как я использую сокеты tcp) И тогда я могу сравнить время, когда я получил ACK со временем отправки данных? , но с .NET-сокетами нет возможности сделать это, поскольку «отправка посылки» или «отправка» не означает, что данные были фактически получены одноранговым узлом ... – Kite
ACK Я предполагаю, что вы говорите опускается вниз на транспортном уровне и не обязательно соответствует ACK, который вы хотите. Пакет можно разделить на несколько пакетов нижнего уровня, каждый с разными ACK. Единственный способ сделать это - реализовать логику ACK самостоятельно, используя механизм, подобный тому, что я описываю в своем ответе.Если вы беспокоитесь о замедлении приложения, тогда вы можете его спроектировать, чтобы он только ACK подавал каждое 10-е сообщение или около того. –