Под «отставанием» я подразумеваю, что клиент удаленного рабочего стола работает на несколько секунд позади сервера.То, что сервер делает в определенный момент, отражается на стороне клиента после задержки в 15-20 секунд.
Вам необходимо 100% подтвердить две вещи.
1) Клиент заблокирован в fread
?Если нет, то это отстает, потому что он слишком занят, чтобы не отставать от сервера (или код сломан и тупо не вызывает fread
).В любом случае буферизация и сеть не являются ошибочными.
2) Получил ли клиент меньше общих байтов от своих завершенных вызовов на fread
, чем сервер отправил в своих завершенных вызовах на fwrite
?Если нет, то это «отстает», потому что он неправильно понял некоторые данные, которые он получил (не смог понять, что он получил некоторые данные, которые он на самом деле получил).В этом случае буферизация и сеть не являются ошибочными.
Я поставлю вам с вероятностью 10 к 1, что одна из двух вещей, которые я упомянул выше, является случаем.
Чтобы прояснить случайдва, если неясно, рассмотрим этот пример:
1) Сервер отправляет сообщение.
2) Сервер отправляет сообщение.
3) Клиент вызываетfread
и получает оба сообщения, но из-за неработающего кода думает только, что получил одно.(Возможно, неработающий код предполагает, что сообщения не могут «слипаться».)
4) На этом этапе может показаться, что клиент «отстает» от сообщения, но на самом деле код клиента простосломана.Клиент прочитал столько байтов, сколько отправил сервер.Это не отстает, просто сломан.
Пока вы не исключите эти два случая типа «занятый код» и «сломанный код», вы не должны предполагать, что сеть виновата, так как это наименее вероятное объяснение.