Ich habe einen Netty-Client, der gut funktioniert, wenn die Server-Anwendung zuhört. Wenn die Serveranwendung jedoch nicht ausgeführt wird und daher nicht den Port überwacht, wird der Client weiterhin so ausgeführt, als erwarte er, dass der Server vorhanden ist.Wie kann ich meinen Netty-Client erkennen lassen, wenn mein Netty-Server einen Port überwacht (ist verfügbar)?
Ich möchte den Fall behandeln, wenn der Server nicht zuhört und in einem solchen Fall nicht einmal die Daten senden (und stattdessen etwas anderes tun, wie dem Benutzer sagen, einen Administrator zu kontaktieren oder so). Ist das überhaupt möglich?
Hinweis: Wenn der Client versucht, eine Verbindung zu einem nicht angegebenen Port oder IP herzustellen, gibt mein Client Ausnahmen, die ich behandeln kann. Mein Problem ist, dass keine Ausnahmen ausgelöst werden, wenn der Server nicht den Port abhört, den er normalerweise hören soll.
Sie können [URLConnection.setConnectionTimeout] (https://docs.oracle.com/javase/8/docs/api/java/net/URLConnection.html#setConnectTimeout-int-) verwenden, um eine Verbindung herzustellen. –
Aber dann müsste ich warten bis diese Zeit abgelaufen ist. Ich könnte auch einfach warten, bis der Client fertig ist und prüfen, ob ein Ergebnis empfangen wurde, und wenn nicht, den Fall behandeln. Aber ich würde lieber einen Weg finden, herauszufinden, was mit meinem Server los ist, anstatt auf eine Zeitüberschreitung zu warten oder den Client zu beenden. Außerdem: Was würde passieren, wenn meine Verbindung aus irgendeinem Grund langsam wäre? Würde die Zeitüberschreitung die Verbindung in diesem Fall nicht abbrechen? – giro
Eine Art "Ping" ist das. Für localhost könnte man versuchen, den Port an sich selbst zu binden (überprüfen, dass der Port frei ist), aber das ist ein schrecklicher Hack. Es tut uns leid. –