Ich mache eine Anwendung, wo der Client eine Nachricht an den Server sendet und wartet dann 5 Sekunden (lasst uns annehmen) für den Server zu antworten und wenn es keine Rückmeldung gibt, es erneut versucht. Wenn der Server mit der Nachricht antwortet, wird sie vom Client verarbeitet. Dies geht in der Schleife weiter und passiert nach einiger Zeit wieder.JAVA: Wann Socket setSoTimeout verwenden?
Zu diesem Zweck dachte ich, SetSoTimeout (Zeit) auf dem Client Socket zu verwenden, aber nach dem Lesen der Javadoc und viele Erklärungen im Internet bin ich verwirrt, ob dieser Ansatz richtig ist.
Was lese ich im Internet
(1) Wenn ich setSoTimeout auf dem Sockel verwenden dann das Timeout für die Dauer gibt, in dem die Verbindung hergestellt werden muss, und wenn festgestellt wird, nicht dann versucht, die Verbindung für die angegebene Zeit herzustellen.
(2) Wenn ich setSoTimeout am Socket verwende, wartet es auf eingehende Nachrichten für das angegebene Zeitintervall und wenn keine Nachricht empfangen wird, hört es auf zu warten.
Meine Fragen sind -
(1) Welche der oben wahr ist?
(2) Wenn die zweite Aussage wahr ist, kann ich sie dann für meine Implementierung verwenden?
(3) Wenn die zweite Aussage wahr ist, wann startet der Timeout-Timer genau? Ist es wenn ich den Socket deklariere und die Timeout-Zeit darauf festlege oder ist es wenn ich die Nachricht sende?
Wenn eine der Erklärungen nicht auf meinen Fall zutrifft, was sollte ich dann tun, um auf der Client-Seite für einen bestimmten Zeitraum zu warten, bis der Server antwortet? Wenn die Antwort kommt, sollte ich sie verarbeiten und den gleichen Prozess wiederholen. Wenn die Antwort nicht kommt, sollte ich weitermachen und den gesamten Prozess noch einmal wiederholen.