La mia app server utilizza un TIdTCPServer, diverse app client utilizzano TIdTCPClients per connettersi al server (tutti i computer si trovano nella stessa LAN).Best practice: mantenere la connessione TCP/IP aperta o chiusa dopo ogni trasferimento?
Alcuni client devono contattare il server solo ogni due minuti, altri una volta al secondo e uno lo fa circa 20 volte al secondo.
Se tengo aperta la connessione tra un client e il server, salverò la riconnettersi, ma devo controllare se la connessione è andata persa.
Se chiudo la connessione dopo ogni trasferimento, deve riconnettersi ogni volta, ma non è necessario verificare se la connessione è ancora presente.
Qual è il modo migliore per farlo?
A quale frequenza di trasferimenti di dati devo mantenere la connessione aperta in generale?
Quali sono altri vantaggi/svantaggi per entrambi gli scenari?
Il sovraccarico di creazione di una nuova connessione TCP è principalmente di alcuni roundtrip. E quelli sono abbastanza veloci su LAN. Quindi chiuderei la connessione dopo alcuni secondi di non utilizzo. – CodesInChaos
Ma lo scriverei in modo semplicissimo (molto probabilmente la chiusura istantanea) e poi controllerò se le prestazioni sono soddisfacenti. – CodesInChaos
Vedere la mia risposta a questa domanda: http://stackoverflow.com/questions/4872800/socket-open-and-close-on-1-sec-or-to-hold-open/4873002#4873002 –