Moja aplikacja serwera używa TIdTCPServer, kilka aplikacji klienckich używa TIdTCPClients do łączenia się z serwerem (wszystkie komputery znajdują się w tej samej sieci LAN).Najlepsza praktyka: Pozostaw połączenie TCP/IP otwarte lub zamknij po każdym przesłaniu?
Niektórzy z klientów wystarczy skontaktować się z serwerem co kilka minut, inni raz drugi i jeden zrobi to około 20 razy na sekundę.
Gdybym utrzymać połączenia między klientem a serwerem otwartym, będę zapisać ponownie połączyć, ale trzeba sprawdzić, czy połączenie zostanie przerwane.
Gdybym zamknąć połączenie po każdym transferze, to musi ponownie łączyć za każdym razem, ale nie ma potrzeby, aby sprawdzić, czy połączenie jest nadal.
Jaki jest najlepszy sposób na zrobienie tego?
Przy jakiej częstotliwości przesyłania danych powinienem ogólnie utrzymywać połączenie otwarte?
Jakie są inne zalety/wady obu scenariuszy?
Koszt nowego połączenia TCP to głównie kilka wizyt w obie strony. A te są dość szybkie w sieci LAN. Tak więc zamknęłbym połączenie po kilku sekundach nieużywania go. – CodesInChaos
Ale napisałbym to w prosty sposób (najprawdopodobniej natychmiastowe zamknięcie) najpierw, a następnie sprawdź, czy wydajność jest zadowalająca. – CodesInChaos
Zobacz moją odpowiedź na to pytanie: http://stackoverflow.com/questions/4872800/socket-open-and-close-on-1-sec-or-to-hold-open/4873002#4873002 –