Instanz einer inneren Klasse

Status
Nicht offen für weitere Antworten.

joschika77

Bekanntes Mitglied
Hallo Leute.

Wie kann man eine gebildete Instanz einer inneren Klassen im späteren Programmverlauf wieder
benutzen, ohne das sich das Programm festfährt?

Code:
    	public void runChat() throws IOException
	{
			while(true)
			{
				ClientConnect clientc = new ClientConnect(server.accept());
				vecClient.addElement(clientc);
				clientc.start();
			}
	}

Kann mir jemand helfen?

MfG Ronn
 
du musst die variable als instanzvariable z.b machen, dann kann immerwieder auf sie zugegriffen werden...

Ist es gewollt,dass du in der while schleige ständig neue Objekte erzeugst, ich behaupte dann mal, dass der dir dann bald abkratzen wird (while(true)) ist sehr schnell :roll:
 
Wie?
Als Inszanzvariable?
Wie kann ich das verstehen?

Das mit While(true) geht.Kein Problem.
Also ich starte das Prog und die innere Klasse wird instanziert.
Nun stoppe ich den Dienst mit
Code:
 server.close
im Verlauf des Progs.
Wenn ich jetzt den Start Button Funktion runChat() wieder aufgerufen.
Und da fährt das Prog sich fest.
Wahrscheinlich weil ich die gleiche Instanz nehme.
Deswegen wollte ich die Instanz irgendwie löschen oder so, beim server.close Aufruf.
Weist wie ich meine?

MfG Ronn
 
Code:
         while(true)
         {
            ClientConnect clientc = new ClientConnect(server.accept());
            vecClient.addElement(clientc);
            clientc.start();
         }

Es gibt 3 Möglichkeiten eine Schlaufe zu beenden:

  • Mit einer Bedingung: while( index < 20 );
  • Mit einem Break: while( true ) { if( xyz ) break; }
  • Mit einer Exception, die innerhalb der Schleife entsteht: while( true ){ int y = array[ -1 ]; }

Ich sehe keine davon in diesem while( true ) :arrow: die Schlaufe wird nie beendet, oder ich bin blind.

Mach einen einfachen Test:
Code:
         int count = 0;
         while(true)
         {
            System.out.println( count++ ); // <<<<<<<<<< hier neu

            ClientConnect clientc = new ClientConnect(server.accept());
            vecClient.addElement(clientc);
            clientc.start();
         } 
         System.out.println( "ich bin frei" );

Was passiert auf der Konsole?

mfg Beni
 
Danke euch für die Antwort.
Hab jetzt was hinbekommen.
Wenn ich am Server den Server Socket schließe und dann wieder starte hat er sich festgefahren.
Nun verbinde ich mich mit dem Client wieder am Server. Komischer Weise funktioniert dann wieder alles am Server.
Was kann das sein?
Ich bin für jede Antwort dankbar.

MfG Ronn
 
deathbyaclown hat gesagt.:
Ist es gewollt,dass du in der while schleige ständig neue Objekte erzeugst, ich behaupte dann mal, dass der dir dann bald abkratzen wird (while(true)) ist sehr schnell :roll:

es ist sicher gewollt, diese schleife ist nicht schnell erklärung im code
Code:
          while(true) 
         { 
            ClientConnect clientc = new ClientConnect(server.accept());  //wartet hier solange bis eine connection
                                                                                                    //Anfrage vom client kommt, acceptiert diese     
                                                                                                    //und merkt sich die
                                                                                                    //verbindung und wartet beim nächsten 
                                                                                                    //schleifendurchlauf wieder hier 
                                                                                                    //die schleife hängt sich also nicht auf
            vecClient.addElement(clientc); 
            clientc.start(); 
         }

zumindest ist das bei socket so weiss ja nicht was ClientConnect macht aber ich denke das baut auf socket auf


gruß thanni
 
joschika hat gesagt.:
Danke euch für die Antwort.
Hab jetzt was hinbekommen.
Wenn ich am Server den Server Socket schließe und dann wieder starte hat er sich festgefahren.
Nun verbinde ich mich mit dem Client wieder am Server. Komischer Weise funktioniert dann wieder alles am Server.
Was kann das sein?
Ich bin für jede Antwort dankbar.

MfG Ronn

vielleicht hilft es wenn du den socket nicht nur closed sondern auch null setzt, probier mal ?!

gruß thanni
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben