Ich habe zwei Komponenten, die über TCP/IP kommunizieren. Komponente A fungiert als Server/Listener und Komponente B ist der Client. Die beiden sollten so schnell wie möglich kommunizieren. Es kann immer nur eine Verbindung geben (obwohl das neben dieser Frage steht). Ein leitender Entwickler in meiner Firma hat gesagt, dass ich Heartbeats auf Anwendungsebene zwischen den beiden Komponenten verwenden muss, um sicherzustellen, dass die Verbindung offen bleibt.Muss ich Heartbeat, um eine TCP-Verbindung offen zu halten?
Ich dachte, die Verbindung bleibt offen mit TCP/IP, aber ich habe eine Reihe von Blogs/Seiten gelesen, die sagen, es ist ziemlich Standard-Praxis zum Herzschlag zwischen diesen Anwendungen.
Ich kenne einen Teil der Grundkomponente Eine Heartbeats-Komponente B ist so, dass sie den Support informieren kann, wenn Kommunikationsprobleme mit Komponente B vorliegen (entweder der Link ist ausgefallen oder Komponente B läuft nicht). Sind Herzschläge aus irgendeinem anderen Grund nötig? Um sicher zu gehen, dass es oft etwas "in der Leitung" gibt, um es offen zu halten?
Die Komponente A tastet alle 20 Sekunden eine Komponente B ab und schließt die Verbindung, wenn in 120 Sekunden kein Signal von Komponente B empfangen wird. Anschließend wird wieder auf Verbindungen gewartet, unter der Annahme, dass Komponente B regelmäßig eine erneute Verbindung versucht, wenn die Verbindung unterbrochen wird. Dies funktioniert erfolgreich.
Um meine Frage zu wiederholen: Sind Heartbeats notwendig, um eine TCP/IP-Verbindung am Leben zu erhalten?
Könnte dieses Verhalten auch implementierungsabhängig sein? Ist das im TCP-Standard spezifiziert oder bleibt es als Implementierungsdetail übrig? Hoffentlich kann auch jemand anderes darauf antworten. – dss539
Es ist ein Implementierungsdetail, das ich sagen würde, da nicht alle TCP/IP-basierten Protokolle so implementiert werden, dass es ganz Ihnen überlassen bleibt. – Lloyd
Ja - nicht wegen TCP/IP - aber wegen anderer Hardware oder Software können Sie Verbindungen wie Firewalls und Home-Router durchführen, die dazu neigen, inaktive TCP-Verbindungen zu löschen, siehe: http://stackoverflow.com/questions/ 3907537/keep-alive-tcp-ip-connected-sockets-über-das-internet-wann-wie-und-wie-viel/5149662 # 5149662 – markmnl