G
gast
Gast
hey,
ich schreibe grade ein einfache Klasse mit Socket, als Design nutze ich das Listener Pattern.
Meine Klasse S1 macht eine Client Socket Verbindung auf und while(true) werte sie empfangene Daten aus in einer connect() Methode!
Nun kommt das Problem
S1 s = new S1(...);
s.connect() // Hier Start der while Schleife
s.addListener(...); //Die Listener reagieren und funktionieren
s.writePufferLine(...); //Diese Zeile wird niemals erreicht da connect() läuft,
wenn ich nun die connect() Methode in einen Thread verpacke kann ich s.writePufferLine(...) aufrufen jedoch kommt es zu folgendem Problem:
Wenn die connect() Methode noch nicht mit einem Server verbunden ist und diese in einem Thread läuft... wird ja direkt nach connect() s.writePufferLine aufgerufen und naja ich kann ja nix über das Socket schicken wenn die Verbindung noch nicht besteht!
Wie löse ich?
Ich habe mal in den connect() Thread einen Timer eingebaut sodass nach dem Aufruf s.connect() erst 10 Sekunden vergehen bis s.writePufferLine(...) erfolgt bzw. das Programm weiter läuft...
Eine andere Lösung wäre ich schreibe mir noch einen Listener "afterConnect"...
Wie lößt man dieses Problem am besten?
Vlg
ich schreibe grade ein einfache Klasse mit Socket, als Design nutze ich das Listener Pattern.
Meine Klasse S1 macht eine Client Socket Verbindung auf und while(true) werte sie empfangene Daten aus in einer connect() Methode!
Nun kommt das Problem
S1 s = new S1(...);
s.connect() // Hier Start der while Schleife
s.addListener(...); //Die Listener reagieren und funktionieren
s.writePufferLine(...); //Diese Zeile wird niemals erreicht da connect() läuft,
wenn ich nun die connect() Methode in einen Thread verpacke kann ich s.writePufferLine(...) aufrufen jedoch kommt es zu folgendem Problem:
Wenn die connect() Methode noch nicht mit einem Server verbunden ist und diese in einem Thread läuft... wird ja direkt nach connect() s.writePufferLine aufgerufen und naja ich kann ja nix über das Socket schicken wenn die Verbindung noch nicht besteht!
Wie löse ich?
Ich habe mal in den connect() Thread einen Timer eingebaut sodass nach dem Aufruf s.connect() erst 10 Sekunden vergehen bis s.writePufferLine(...) erfolgt bzw. das Programm weiter läuft...
Eine andere Lösung wäre ich schreibe mir noch einen Listener "afterConnect"...
Wie lößt man dieses Problem am besten?
Vlg