2016-11-02 8 views
0

Ich verwende Java und Netty, um über eine TCP/IP-Verbindung eine Verbindung zu einem Unity-Client herzustellen.Schreiben genug, um einen Verbindungsverlust zu erkennen?

Manchmal kann die Verbindung unterbrochen werden und der Unity-Typ hat vorgeschlagen, alle 5 Sekunden einen Ping (nur eine Ein-Byte-Nachricht) zu senden. Wenn die Empfangszeit des letzten Ping höher als 30 Sekunden ist, ist die Verbindung verloren.

Muss ich wirklich die Zeit messen? Ist es nicht genug, um eine Ausnahme auszulösen, wenn ich versuche, etwas über den Socket zu senden? Gibt es einen Fall, in dem ein Schreibvorgang keinen Verbindungsverlust erkennt?

Ich habe es netty da ich es benutze, aber es ist wahrscheinlich das gleiche mit einer einfachen Socket-Verbindung.

+1

Nein, es ist nicht genug. TCP hat Puffer an beiden Enden, was bedeutet, dass jeder spezifische Schreibvorgang überhaupt nicht fehlschlägt: Es sind die nachfolgenden Schreibvorgänge, die fehlschlagen. – EJP

Antwort

0

Ich denke, die wirkliche Antwort ist: Sie müssen selbst definieren, wie Ihre Anwendung sich verhalten soll.

Was ich meine ist: Es gibt viele verschiedene Probleme, die auf Ihre Verbindung auftreten können. Schreiben von Daten, und sofort fehlgeschlagen, wenn das nicht funktioniert, ist nur eine Option, damit umzugehen.

Sie können sich auch kontinuierliches Pingen vorstellen; zum Beispiel um zu erkennen, wenn der andere gerade "vorübergehend" nicht verfügbar ist. Mit anderen Worten: Sie etablieren eine Art "Herzschlag" -Monitoring; und damit ermöglichen Sie Ihrer Anwendung eine "größere Bandbreite" potenzieller "Reaktionen".

Verwandte Themen