Chatprog schließen,AWT + Swing

Status
Nicht offen für weitere Antworten.

joschika77

Bekanntes Mitglied
Hallo!

Hab so ein kleines Chatprog geschrieben.
Wenn ich das Prog schließe kommt folgende Fehlermeldung:


  • java.net.SocketException: socket closed
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:353)
    at java.net.ServerSocket.implAccept(ServerSocket.java:439)
    at java.net.ServerSocket.accept(ServerSocket.java:410)
    at ChatServer.runChat(ChatServer.java:216)
    at ChatServer.<init>(ChatServer.java:53)
    at ChatServer.main(ChatServer.java:228)
Was kann ich tun?
Hier der Code:
Code:
public class ChatServer extends JFrame implements ActionListener
{
	private Panel pElemente;
	private Label lCounter;
	private Label lPortadresse;
	private TextArea taAusgabe;
	private Button bShowChat;
	private Button bBeenden;
	
	public static int counter = 0;
	
	private ServerSocket server;
	static Vector vecClient = new Vector();
	
	public ChatServer() throws Exception
	{
		try 
		{
		  UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName() );
		}
		catch(Exception e) 
		{
		  e.printStackTrace();
		}
		setSize(300,100);
		setVisible(true);
		setResizable(false);
		setLocation(300,160);
		setTitle("Chat-Server");
	 
		addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				try
				{
					server.close();
					System.exit(0);
				}catch(IOException fehler){}

			}
		});
	   fensterkomponenten();
	   
	   server = new ServerSocket(5555);
	   runChat();
	}
	
	private void fensterkomponenten()
	{
		String portadresse = "5555";
		
		this.getContentPane().setLayout(null);
		
		pElemente = new Panel();
		pElemente.setLayout(null);
		pElemente.setBounds(0,0,300,300);
	 	
		lCounter = new Label();
		lCounter.setText("Verbundene Clients : " +counter);
		lCounter.setBounds(0,0,150,25);
		pElemente.add(lCounter);
		
		lPortadresse = new Label();
		lPortadresse.setText("Portadresse : " +portadresse);
		lPortadresse.setBounds(180,0,120,25);
		pElemente.add(lPortadresse);
		
		bBeenden = new Button("Beenden");
		bBeenden.setBounds(10,30,80,25);
		bBeenden.addActionListener(this);
		pElemente.add(bBeenden);
		
		bShowChat = new Button("Chat öffnen");
		bShowChat.setBounds(200,30,90,25);
		bShowChat.addActionListener(this);
		pElemente.add(bShowChat);
		
		taAusgabe = new TextArea();
		taAusgabe.setBounds(10,90,280,150);
		pElemente.add(taAusgabe);
		
		this.getContentPane().add(pElemente);
	}
	
	
	public void actionPerformed(ActionEvent e)
	{
			if(e.getActionCommand().equalsIgnoreCase("Chat öffnen"))
			{
				this.setSize(300,300);
				
				bShowChat.setLabel("Chat schließen");
			}
			
				if(e.getActionCommand().equalsIgnoreCase("Chat schließen"))
				{		
			//		Textarea einblenden
					this.setSize(300,100);
						
					bShowChat.setLabel("Chat öffnen");
					
				}
			
		if(e.getActionCommand().equalsIgnoreCase("Beenden"))
		{
			try
			{
				if(JOptionPane.showConfirmDialog(this,"Wollen Sie den Dienst wirklich beenden ?","Frage ???",JOptionPane.YES_NO_OPTION)==0)
				{
					try
					{
						server.close();
						System.exit(0);
					}catch(Exception enet){}
				}
			}
			catch(Exception a)
			{}
		}
	}
	
	//innere Klasse
	class ClientConnect extends Thread
	{
		String name = "noname";
		BufferedReader reader;
		BufferedWriter writer;
		
		public ClientConnect(Socket client)
		{
			ChatServer.counter++;
			setzeCounter();
			
			try
			{
				reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
				writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
				name = reader.readLine();
			}
			catch(IOException erw){}
		}
		
		
		public void run()
		{
			String zeile;
			try
			{
				while((zeile = reader.readLine()) != null)
				{
					taAusgabe.append(name +  " : " + zeile + '\n');
					doSende(zeile);
				}
			}
			catch(IOException iof)
			{
				System.out.println(iof);
			}
			ChatServer.counter--;
			setzeCounter();
			try
			{
				reader.close();
				writer.close();
				writer.flush();		
			}
			catch(Exception fe)
			{
				System.out.println(fe);
			}
		}
	
	
		public void doSende(String text)
		{
			for(int i=0 ; i < vecClient.size() ; i++)
			{
				ClientConnect cc =((ClientConnect)vecClient.elementAt(i));//.sende(name + " : " + text);
				
				try
				{
				cc.writer.write(text);
				cc.writer.newLine();
				cc.writer.flush();
				}
				catch(IOException fehler)
				{
					System.out.println(fehler);
				}
				
			}
		}
		
	
	}//Ende innere Klasse
	
	
	public void setzeCounter()
	{
		lCounter.setText("Verbundene Clients : " +counter);
	}
	
	
	public void runChat() throws IOException
	{
		while(true)
		{
			ClientConnect clientc = new ClientConnect(server.accept());
			vecClient.addElement(clientc);
			clientc.start();
		}
	}
	
	public static void main(String[] args) 
	{
		ChatServer chatS;
		
		try 
		{
			chatS = new ChatServer();
			chatS.show();
		} 
		catch(Exception e)
		{
			e.printStackTrace();
		}
			
		}
}
Und wenn ich die Komponenten in J ändere sehe ich gar nichts.
Woran liegt so etwas?

Gruß Ronn
 

odysseus

Bekanntes Mitglied
ob awt oder swing wird dabei egal sein.

in meinem chat schliesse ich die verbindung in folgender reihenfolge:

thread.stop(); // funzt aber deprecated
out.close();
in.close();
socket.close();
 

joschika77

Bekanntes Mitglied
Aber warum muß ich immer erst mein Frame minimieren, dann wieder maximieren
damit ich was sehe.(Buttons usw.)

Gruß Ronn
 
B

bygones

Gast
musst du nicht...

es müsste langen, dass du ein repaint() oder validate() explizit aufrufst. (Das minimieren / maximieren führt nämlich zu einem repaint)
 

joschika77

Bekanntes Mitglied
Alles klar. Danke dir!
Ich hatte es schonmal probiert mit repaint().
Wohl an der falschen Stelle.
Jetzt geht es jedenfalls.

Gruß Ronn
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P PooledConnection früher schließen oder abarbeitung queuen? wie vorgehen Allgemeine Java-Themen 7
C anderes Programm schließen! Allgemeine Java-Themen 5
MaxG. Swing Frame schließen Allgemeine Java-Themen 9
T Fenster schließen verhindern Allgemeine Java-Themen 13
Tausendsassa Threads Einen Thread sich selbst schließen lassen Allgemeine Java-Themen 17
Tausendsassa Interface Eine Gui von einer anderen schließen lassen Allgemeine Java-Themen 3
F Fenster schließen bei Klick auf Kreuz Allgemeine Java-Themen 14
A Applet Alle Threads beim schließen des Applets beenden Allgemeine Java-Themen 8
T Methode beim Schließen der xhtml Seite? Allgemeine Java-Themen 4
D Dialog soll sich beim Klick auf Button schließen Allgemeine Java-Themen 8
E externen Prozess schließen, wenn Programm geschlossen wird Allgemeine Java-Themen 2
Landei DDE-Probleme und Programm schließen Allgemeine Java-Themen 2
B Algorythmus Lücke in Sequenz schließen Allgemeine Java-Themen 7
B Applet Destruktor beim Browser schließen? Allgemeine Java-Themen 5
B Öffnen und schließen von Pdf-Files Allgemeine Java-Themen 8
nrg Java Observer in SysTray laufen lassen / Console schließen Allgemeine Java-Themen 2
A HTML-Seite wieder schließen Allgemeine Java-Themen 2
A Java-Anwendung "richtig" schließen ohne JVM zu beenden Allgemeine Java-Themen 2
N JTree nicht genutzte Pfade schließen Allgemeine Java-Themen 2
M Programm schließen? Allgemeine Java-Themen 2
E Alle unter Prozesse der beim schließen mit schließen Allgemeine Java-Themen 3
S GUI komplett schließen und wieder Neu laden? Allgemeine Java-Themen 4
A Problem mit ShutdownHook beim schließen Allgemeine Java-Themen 7
O File zum löschen "schließen" Allgemeine Java-Themen 2
M Programm schließen und wieder neu starten Allgemeine Java-Themen 9
MQue Datei- referenz schließen Allgemeine Java-Themen 5
M Methode vor dem Schließen aufrufen Allgemeine Java-Themen 4
P DockingFrames schließen Allgemeine Java-Themen 2
P Pfad schließen xml Allgemeine Java-Themen 3
W Das schließen des JFrame abfangen, wiei? Allgemeine Java-Themen 6
C externes Programm läuft erst nach schließen des mainprogramm Allgemeine Java-Themen 7
G Java-Applet bzw. Browser schließen Allgemeine Java-Themen 3
S automatisches schließen des prog Allgemeine Java-Themen 2
S mit welchem befehl kann ich mein programm autom. schließen Allgemeine Java-Themen 3
Q Methode soll auf schließen eines Frames warten Allgemeine Java-Themen 4
D Fremdes Programm schließen (ohne process.destroy()) Allgemeine Java-Themen 8
A öffnen und schließen von programmen aus java Allgemeine Java-Themen 3
M ALT-F4 fenster schließen unterdrücken Allgemeine Java-Themen 2
P Java --> Anwendungen Starten/Schließen Allgemeine Java-Themen 10
U JFrame, JOptionPane - vor dem Schließen Benutzer fragen Allgemeine Java-Themen 10
N Java Fenster schließen Allgemeine Java-Themen 2
G Fenster/Frame schließen Allgemeine Java-Themen 16
T CMD nach aufruf von javaw Programmname wieder schließen Allgemeine Java-Themen 3
J JFrame Problem beim schließen Allgemeine Java-Themen 2
V Button schließen - NullPointerException Allgemeine Java-Themen 6
S Kochbuch bzw. Rezepte-Datenbank app mit Swing..? Allgemeine Java-Themen 5
I Swing GUI / Webapp..... benötige ein paar Tips / Ratschläge Allgemeine Java-Themen 18
KeTho1712 Java Swing: JTable standardmäßig füllen, sodass bei Start bereits Datensätze gespeichert sind Allgemeine Java-Themen 1
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
RalleYTN 2D-Grafik Bild ohne AWT, Swing und JavaFX rotieren Allgemeine Java-Themen 12
T Methoden Swing/Graphics/draw Allgemeine Java-Themen 6
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
N GUI Interface, swing Allgemeine Java-Themen 7
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
V Input/Output Swing Icons in Jar Archiv laden Allgemeine Java-Themen 10
M for Schleife mit Swing Button abbrechen Allgemeine Java-Themen 7
O Swing + EJB Allgemeine Java-Themen 4
M JavaFX-Gegenstück zu Swing-Button-DoClick-Methode Allgemeine Java-Themen 5
eskimo328 Swing Client Anwendung für MAC OS (Update Routine) Allgemeine Java-Themen 6
T HTTP HttpWebRequest in Swing-Projekt nutzen Allgemeine Java-Themen 4
G Input/Output Manuelle Änderung von Wert in Swing Komponente bemerken! Allgemeine Java-Themen 2
K Threads - Swing - Synchronisation nötig? Allgemeine Java-Themen 8
J [SWING]Elegante Java Formular Lösung? XML? Allgemeine Java-Themen 4
M Swing-Frontend abhängig von ausgewähltem Objekt Allgemeine Java-Themen 4
I Swing Welche Swing Komponente soll ich nehmen? Allgemeine Java-Themen 2
L Web-Framework und Swing Framework o.ä Allgemeine Java-Themen 15
Y Anwendung starten(JAR) - Entscheidung Konsole oder Swing Allgemeine Java-Themen 5
A Swing paintcomponent komischer Fehler Allgemeine Java-Themen 6
algorismi Google maps in Java Swing Allgemeine Java-Themen 2
nrg Swing 2 Fragen zu Swing/AWT Allgemeine Java-Themen 7
T Jakarta Objekt (Excel Sheet) in Swing/SWT einbetten Allgemeine Java-Themen 3
D Organigramm mit GWT oder Swing Allgemeine Java-Themen 4
E Swing hilfe, JWindow mit eintrag in taskleiste Allgemeine Java-Themen 2
M Name der Swing Komponente Allgemeine Java-Themen 3
A awt und swing Allgemeine Java-Themen 3
MQue Swing-Componenten -> JavaBean Allgemeine Java-Themen 5
H Schrifthöhe berechnen / Swing Allgemeine Java-Themen 5
Z Swing vs Konsole Allgemeine Java-Themen 17
T Wo ist javax.swing.TransferHandler enthalten? Allgemeine Java-Themen 10
ARadauer Scaffolding für Swing Anwendungen Allgemeine Java-Themen 4
? Swing Anwendung aus Konsole starten Allgemeine Java-Themen 7
H Webseiten aus Swing Allgemeine Java-Themen 4
B SBCC - Swing Better Components Collection - downloadlink ? Allgemeine Java-Themen 5
G Feld Validierung in Swing Programm Allgemeine Java-Themen 6
G Swing Validierungs Framework Allgemeine Java-Themen 2
A Klappmechanismus bei Components(SWING) Allgemeine Java-Themen 8
M Swing funktioniert und funktioniert nicht Allgemeine Java-Themen 4
O Swing oder JMF Problem Allgemeine Java-Themen 11
M Swing JButton Farbe zurücksetzen Allgemeine Java-Themen 6
P RTF dynamisch machen (IText, Swing) Allgemeine Java-Themen 4
E Thread Fragen in Verbindung mit Swing Allgemeine Java-Themen 4
G java applet mit swing -> hundert prozent cpu auslastung Allgemeine Java-Themen 11
S Swing-Projekt zum Üben Allgemeine Java-Themen 5
I Servlet von einem Swing Based GUI aufrufen Allgemeine Java-Themen 5
D Spezielles Eingabefeld für Numerische Werte in Swing Allgemeine Java-Themen 2
G Swing vs. RCP Allgemeine Java-Themen 9
T substring() und Swing setText() Allgemeine Java-Themen 6
A Hibernate und Swing Allgemeine Java-Themen 2
S SWING Problem Allgemeine Java-Themen 2
S SWING UND AWT!Problem wegen Canvas! Allgemeine Java-Themen 29

Ähnliche Java Themen


Oben