В моем сервере-приложении используется TIdTCPServer, несколько клиентских приложений используют TIdTCPClients для подключения к серверу (все компьютеры находятся в одной локальной сети).Лучшая практика: сохранить соединение TCP/IP открытым или закрыть его после каждой передачи?
Некоторым клиентам необходимо обращаться к серверу каждые пару минут, другие - раз в секунду, а один - примерно 20 раз в секунду.
Если я поддерживаю соединение между клиентом и сервером, я сохраню повторное подключение, но должен проверить, не потеряно ли соединение.
Если я закрываю соединение после каждой передачи, он должен повторно подключаться каждый раз, но нет необходимости проверять, нет ли соединения.
Каков наилучший способ для этого?
На какой частоте передачи данных я должен держать соединение открытым вообще?
Каковы другие преимущества/недостатки обоих сценариев?
Накладные расходы на создание нового TCP-соединения - это, в основном, несколько раундов. И это довольно быстро в локальной сети. Поэтому я закрою соединение через несколько секунд, не используя его. – CodesInChaos
Но я бы написал его простым способом (скорее всего, мгновенным закрытием), а затем проверить, удовлетворяет ли производительность. – CodesInChaos
См. Мой ответ на этот вопрос: http://stackoverflow.com/questions/4872800/socket-open-and-close-on-1-sec-or-to-hold-open/4873002#4873002 –