У меня следующая ситуация:
Клиент -> Маршрутизатор -> Интернет -> Выделенный сервер
Клиент: При запуске подключается к серверу и сохраняет соединение открытым.Изредка получает уведомления от сервера о том, что файлы изменены.Запускает процесс синхронизации, а затем уведомляет сервер, если это было успешно.Может время от времени терять соединение, поэтому необходимо установить новое соединение.
Сервер (интернет): Содержит файлы, которые иногда изменяются.Принимает входящих клиентов и сохраняет объект tcpclient для этого клиента.Он никогда не может соединиться напрямую с клиентом, потому что клиент сидит за несколькими маршрутизаторами;Вот почему связь должна быть открытой.Уведомляет клиента (ов), когда изменение сделано.А также проверяет для каждого клиента сообщение об успешной синхронизации.
Вопросы:
Как эффективно поддерживать соединение открытымна стороне клиента и сервера?
Что происходит, когда клиент хочет уведомить сервер об успешном процессе синхронизации, но в то же время сервер уведомляет об этомклиент для нового обновления ..?
- Является ли хорошей практикой просто создать Tcpclient (на стороне клиента) и сохранить этот объект на протяжении всей программы?А когда какая-то сетевая операция завершилась неудачно, попробуйте снова подключиться к этому объекту tcpclient?
Я провел много исследований, но не смог найти то, что продолжает использовать тот же tcpclient ..
Кстати: это новая тема, основанная на моем предыдущем посте, где было предложено это решение (повторно использовать tcpclient) ( пакет udp не проходит через )
Приветствует Daan & спасибо взаранее к вашему вниманию